Java 数字格式 - #.## - Windows 和 Linux

Posted

技术标签:

【中文标题】Java 数字格式 - #.## - Windows 和 Linux【英文标题】:Java number format - #.## - Windows and Linux 【发布时间】:2011-10-04 03:59:10 【问题描述】:

我正在使用以下代码来格式化双数

DecimalFormat decimalFormat=new DecimalFormat("#.##");
decimalFormat.format(1.04)

但这给了

java.lang.NumberFormatException: For input string: "1,04"

在 Linux 中 - 但在 Windows 7 中这可以正常工作,如何纠正这个问题?

【问题讨论】:

您确定异常是由对format 的调用产生的吗?它看起来像是一条来自尝试解析而不是格式化的消息。 这在 Windows 或 Linux 之间应该无关紧要 .. 并且 1.04 是一个有效的十进制值,因此异常看起来不正确 英语语言环境中的有效小数:) Double.valueOf(decimalFormat.format(1.04));这给出了例外 @buddhi - 你的区域设置是什么? 【参考方案1】:

这里似乎回答了一个非常相似的问题 (DecimalFormat and Double.valueOf()) 关于 java 数字格式。基本上,您遇到的差异可能与 Windows 上定义的区域设置与 Linux 不同(例如:在 Windows 上,您将其配置为与 linux 不同的国家/语言)。

【讨论】:

我不知道您使用的是什么发行版,但我会给您提供可能与您现在使用的相似或相同的 Ubuntu wiki 说明:help.ubuntu.com/community/Locale 确保所有区域设置相关变量定义正确。但也要看看链接上的建议,因为它似乎更有可能是永久修复) 您在 W7 和 Linux 中使用相同的语言环境吗?

以上是关于Java 数字格式 - #.## - Windows 和 Linux的主要内容,如果未能解决你的问题,请参考以下文章

java--数字格式化

Java连载80-数字类格式随机数BigDecimal

java中的数字格式使用Lakh格式而不是百万格式

洛谷P1886 滑动窗口(POJ.2823 Sliding Window)(区间最值)

Java 数字格式验证

Java 格式化数字--- DecimalFormat