x = rd.nextInt((4000) - 2000) / 1000.0;
Run Code Online (Sandbox Code Playgroud)
这是在 [0, 2] 到十进制小数之间生成数字,这是我想要的,我只需要负数,所以生成的数字范围在 [-2, 2] 之间。
您面临的问题是整数运算,它会截断结果的小数部分。rd.nextDouble()改为使用,因此算术结果为double,保留小数部分。
但是,要四舍五入到 1/100,您可以使用整数算术对您有利。
你的问题有十位小数的文字,所以这是解决方案:
x = (int)(((rd.nextDouble() * 4) - 2) * 100) / 100d;
Run Code Online (Sandbox Code Playgroud)
但是你的标题提到了X.XXX,所以这是解决方案:
x = (int)(((rd.nextDouble() * 4) - 2) * 1000) / 1000d;
Run Code Online (Sandbox Code Playgroud)
要解开这里发生的事情:
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |