Math.random场景

时间:2017-07-02 22:56:22

标签: java math

示例1: 50 + (int)(Math.random() * 50)返回 50到99 之间的整数。十进制形式的最大数字为99.9重复出现。

示例2: 34 + (int)(Math.random() * 21)返回 34到55 之间的整数。 十进制形式的最大数字为54.9重复出现。

为什么示例2返回55而不是54?

2 个答案:

答案 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”,就像你认为的那样。