Pet*_*rey 20 java floating-point render-to-string
有谁知道为什么数字0.001到0.009被呈现给一个尾随0的字符串,但其他数字没有.例如,数字0.01到0.09没有.
System.out.println(Locale.getDefault());
for (int i = 0; i <= 20; i++)
System.out.println(i / 1e3);
Run Code Online (Sandbox Code Playgroud)
版画
en_GB
0.0
0.0010
0.0020
0.0030
0.0040
0.0050
0.0060
0.0070
0.0080
0.0090
0.01
0.011
0.012
0.013
0.014
0.015
0.016
0.017
0.018
0.019
0.02
Run Code Online (Sandbox Code Playgroud)
编辑DecimalFormat的代码似乎不依赖于语言环境.如果我跑
for (Locale l : Locale.getAvailableLocales()) {
Locale.setDefault(l);
System.out.println(l + " " + 1 / 1e3);
}
Run Code Online (Sandbox Code Playgroud)
在Ubuntu 11.04上的Java 6更新26上,我得到了
ja_JP 0.0010
es_PE 0.0010
en 0.0010
... many locales with the same result ...
sv_SE 0.0010
da_DK 0.0010
es_HN 0.0010
Run Code Online (Sandbox Code Playgroud)
在我得到的同一系统上的Java 7上
ms_MY 0.001
ar_QA 0.001
is_IS 0.001
... many locales with the same result ...
el_CY 0.001
hu 0.001
fr_FR 0.001
Run Code Online (Sandbox Code Playgroud)
avh*_*avh 13
这被认定为Java 1.3中的一个错误- Java 6中: http://bugs.java.com/view_bug.do?bug_id=4428022
编辑:至于为什么会发生这种情况,这是从OpenJDK 6移植的错误报告中提到的修复:http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/8159687b6316
原来这是一个一个一个错误.(修复程序将<=更改为<).
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |