我有一个简单的程序,可以计算双精度值并打印出来。每当该双精度的值为负时,输出字符串的第一个字符是 \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()
它不会发生。在任何地方都找不到关于此的文档。
有人遇到过这种情况或知道如何解释吗?