You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Math.random()生成-50到50随机Double数组时数值超上限问题

问题原因

你编写的随机数生成逻辑本身没有问题,问题出在打印输出的代码语法错误:

  • Math.random() 原生返回的是 左闭右开 区间 [0.0, 1.0) 的双精度浮点数,按照 100 * Math.random() - 50 的计算逻辑,得到的结果范围是 [-50.0, 50.0),理论上不可能出现大于等于50的数值。
  • 错误出在打印语句的拼接逻辑:你代码里写的是 System.out.println(i + ',');,其中包裹逗号的是单引号,代表这是一个char(字符)类型的值。在Java中,char类型的本质是整数,逗号对应的ASCII编码值为44,所以这里并不会执行字符串拼接,而是会先把随机数的double值和44做算术加法运算,再把运算结果打印出来。

你输出里的异常值正好可以对应这个逻辑:

93.00810678750743 实际是 49.00810678750743 + 44得到的结果
54.0536237451922 实际是 10.0536237451922 + 44得到的结果

修复方案

把打印语句里的单引号改为双引号,让逗号变成字符串类型,触发字符串拼接逻辑即可:

// 修复后的打印代码
for (double i: randomNums) {
    System.out.println(i + ",");
}

内容的提问来源于stack exchange,提问作者crlav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:36:03