gpt4 book ai didi

java - 限制 double 的执行方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:52 25 4
gpt4 key购买 nike

我想管理以下范围内的数字:

0,001999,999

出于表示原因,我想降低一些准确性,只保留数字中最重要的 3 位数字。

对于数字 123,12,我期望结果为 123

对于数字 12,123,我期望结果为 12,1

对于数字 0,001,我期望结果为 0,001

我想到的最佳解决方案是将数字转换为字符串,然后再次转换为 double ,这样:

 number = number*1000;
String s = new String(number);
s = s.substr(0, 3) + "000";
number = Double.parseDouble(s);
number = number/1000;

这样可以完成工作,但看起来性能不佳且不够优雅。还有更聪明的选择吗?谢谢!

最佳答案

这是一个有点复杂的答案,它不需要使用任何到 String 的转换:

final int numDigits = 3;

double d = 12.123;

int counter;

for (counter = 0; counter < numDigits && d < Math.pow(10, numDigits - 1); counter++) {
d *= 10;
}

d = Math.floor(d);

d /= Math.pow(10, counter);

System.out.println(d);

输出:12.1

本质上,它会将 double 乘以 10,直到达到小于 1000 的最大值(您的最大值为 999.999),并记录乘以了多少次。然后它执行 floor 函数以去除小数点右边的任何精度。最后,我们将数字除以 10,counter 次,这为我们提供了前 3 位有效数字。

关于java - 限制 double 的执行方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48870610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com