关于Math.random,这种写法是什么意思?

九条腿咸鱼 2011-08-18 11:30:58
long parityNum = ( )(Math.random() * 10000.0D)

问题1:前边的括号是干嘛的?
问题2:10000.D中的D是啥意思?为什么要这么用?
...全文
227 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
luohuijun619 2011-08-18
  • 打赏
  • 举报
回复
用Random类吧,更方便
九条腿咸鱼 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liuyuhua0066 的回复:]
1.涉及到强制转型,因为右侧的结果是double型,左侧是long,将double型转为long型会丢失精度,如需要转换只能用"()"进行强制转型。[/Quote]

如果我的目的就是为了丢失精度呢?我从random处就是为了取出一个4位的整数,于是,就可以用强制类型转换了。嘿嘿,我刚想明白的!
九条腿咸鱼 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 x19881216 的回复:]
问题2:

D和d加在数字后面表示double型

F,f表示float型

L,l表示long型

0x123456表示16进制
o123456注意最前面的是字母o表示八进制
[/Quote]

谢谢,可我已经结贴了……o(︶︿︶)o 唉
liuyuhua0066 2011-08-18
  • 打赏
  • 举报
回复
1.涉及到强制转型,因为右侧的结果是double型,左侧是long,将double型转为long型会丢失精度,如需要转换只能用"()"进行强制转型。

2.完全可以不加D,因为浮点数默认的就是double型,当然,加上也没有错。
小绵羊 2011-08-18
  • 打赏
  • 举报
回复
问题2:

D和d加在数字后面表示double型

F,f表示float型

L,l表示long型

0x123456表示16进制
o123456注意最前面的是字母o表示八进制
九条腿咸鱼 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cbxjj 的回复:]
1.前面括号不写类型比如long绝对会报错
2.D应该是double吧 没什么意义吧
[/Quote]

1.确实会报错,会报“Type mismatch: cannot convert from void to long”!因为我这个是从jar包反编译过来的,所以可能有这种写法也不报错,但是真是的源码里应该不是这么写的!
2.可能也跟反编译有关。刚查了一下,Math.random是返回double的,*10000.0就已经是double了没必要再加个D。其实就是写*1000也没问题!
3.谢谢各位
壮壮203 2011-08-18
  • 打赏
  • 举报
回复
括号里什么也不写是编译不过去的,这个地方括号里必须加long。
softroad 2011-08-18
  • 打赏
  • 举报
回复
楼上都说了。
剑神一笑 2011-08-18
  • 打赏
  • 举报
回复
1.前面括号不写类型比如long绝对会报错
2.D应该是double吧 没什么意义吧
阳明 to life 2011-08-18
  • 打赏
  • 举报
回复
问题1:不晓得。。。估计少些了(long)
问题2:表示double类型数

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧