示例1: 50 + (int)(Math.random() * 50)
返回 50到99 之间的整数。十进制形式的最大数字为99.9重复出现。
示例2:
34 + (int)(Math.random() * 21)
返回 34到55 之间的整数。
十进制形式的最大数字为54.9重复出现。
为什么示例2返回55而不是54?
答案 0 :(得分:2)
Math.random()
会返回[0.0, 1.0)
,
所以你的假设在每个例子中都是正确的
对于第一个例子,50 + 49.9 = 99.9
对于第二个例子,34 + 20.9 = 54.9
我不确定你在哪里获得55例如两个因为当十进制被转换为int时,十进制将失去其精度,有效地将其舍入以创建最大值99,例如1和54,例如2
修改强>
这本书是错误的,如果你希望范围是34到55,那么代码必须是
34 + (int)(Math.random() * 22)
答案 1 :(得分:1)
我认为这是来自教科书或教程?第二个例子是错误的。应该说“34到54”,就像你认为的那样。