gpt4 book ai didi

java - 不同的区域设置会发生 NumberFormatException

转载 作者:行者123 更新时间:2023-12-02 07:22:42 29 4
gpt4 key购买 nike

我正在用 Java 开发一个应用程序,发现了这个奇怪的行为:

如果通过控制面板将区域设置格式设置为匈牙利语(系统默认值),我会收到此异常,但如果我将其设置为英语格式,则它可以正常工作。也适用于虚拟 Mandriva,我首先在那里开发该程序。

这是导致问题的代码片段:

public String stattxt(){
double dt = time_avg();
double bpm = (Double.compare(dt, 0) == 0) ? 0 : msec2bpm(dt);
String s = "<html>Number of control points: " + timestamps.size() + "<br>Average dt: " +
Double.valueOf(new DecimalFormat("#.####").format(dt).toString()) + " ms<br>" +
"Average BPM: " + Double.valueOf(new DecimalFormat("#.####").format(bpm).toString()) + "<br>&nbsp</html>";
return s;
}

其中 time_avg()msec2bpm 都返回 double 值(绝不是 Double 值)。

无论区域设置如何,我怎样才能使这项工作正常进行?任何帮助将不胜感激。

最佳答案

您似乎正在使用

Double.valueOf(new DecimalFormat("#.####").format(dt).toString())

将数字四舍五入到小数点后 4 位,但这对我来说看起来像是一个 hack,并且由于区域化设置而失败(匈牙利可能使用小数逗号,而不是小数点。)

因此,可以使用类似以下的方法来进行 double :

rounded = Math.round(original * 10000)/10000.0;

并且,如果您想创建一个四舍五入到小数点后 4 位的字符串,请使用 String.format()

String.format("%.4f", original);

关于java - 不同的区域设置会发生 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007523/

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