gpt4 book ai didi

java - 为什么我的java代码输出错误的数字?

转载 作者:行者123 更新时间:2023-12-02 00:59:21 26 4
gpt4 key购买 nike

我正在第一次尝试 eclipse,并且正在尝试使用数字键盘对计算器进行编程。目前我正在编写逗号函数,但我的代码不起作用。

这是我的小数位代码:

System.out.println(first+"");
System.out.println(dec_length(first));
first=((first*Math.pow(10, dec_length(first)))+1) / Math.pow(10, dec_length(first));
textfield.setText(""+format.format(first));

方法 dec_length() 是:

public static int dec_length(double input) {
String param=(""+input);
String vergleich =(".0");
String sub= param.substring((param.indexOf('.')));
if (sub.equals(vergleich)) {
return 1;
} else
return sub.length();
}

当我尝试它时,它适用于前 2 个小数位,但随后它停止工作。

这是控制台输出:

5.0
1
5.1
2
5.109999999999999
16
5.109999999999999
16
5.109999999999999
16

有人知道这是怎么回事吗?

最佳答案

问题在于您假设所有小数位都可以由 double 类型精确表示。但事实并非如此。

我建议您将数字存储为字符串,直到使用它进行计算:

String first = "0";

然后添加一个数字或一个逗号(当然,您应该确保您的号码中只有一个 .):

first += digit; // Add a digit from 0 to 9
first += '.'; // Call this when the comma function is called.

之后,当您想要进行计算部分时,您可以轻松地将字符串解析为 double :

double value = Double.parseDouble(first);

关于java - 为什么我的java代码输出错误的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60913967/

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