【发布时间】:2020-11-12 10:55:11
【问题描述】:
我有一个简单的程序,可以计算双精度值并打印出来。 每当该 double 的值为负时,输出字符串的第一个字符是 \u200e, ASCII 值 8206。 我在网上找不到任何关于此的信息。
System.out.println((int)DecimalFormat.getInstance().format(-1).charAt(0));
System.out.println((int)DecimalFormat.getInstance().format(-1.0).charAt(0));
System.out.println((int)NumberFormat.getInstance().format(1).charAt(0));
System.out.println((int)NumberFormat.getInstance().format(0).charAt(0));
打印如下:
8206
8206
49
48
所以我知道每个负值都有这个奇怪的前缀,但是为什么呢?
如果我使用String.format() 它不会发生。
在任何地方都找不到这方面的文档。
有人遇到过这种情况或者知道怎么解释吗?
【问题讨论】:
-
我怀疑如果你使用
getInstance(Locale.ENGLISH),你会得到不同的结果。
标签: java locale number-formatting left-to-right