【发布时间】:2011-11-18 04:35:30
【问题描述】:
我正在尝试将数字转换为本地化字符串。
对于整数和货币值,这非常简单,因为字符串只是一系列数字和数字分组分隔符。例如:
-
12 345 678 901(保加利亚语) -
12.345.678.901(加泰罗尼亚语) -
12,345,678,901(英文) -
12,34,56,78,901(印地语) -
12.345.678.901(弗里斯兰语) -
12?345?678?901(普什图语) -
12'345'678'901(德语)
我使用 Windows GetNumberFormat 函数来格式化整数(并使用 GetCurrencyFormat 来格式化货币值)。
但有些数字不能用固定的符号合理表示,需要scientific notation:
- 6.0221417930×1023
或者更具体地说是E notation:
- 6.0221417930E23
如何获得科学记数法的本地化版本?
我想我可以使用本地化数字来构造它:
6.0221417930E23
6,0221417930E23
6.0221417930e23
6·0221417930E23
6·0221417930e23
6,0221417930e23
6,,0221417930e23
6.0221417930E+23
6,0221417930E+23
6.0221417930e+23
6,0221417930e+23
6·0221417930E+23
6·0221417930e+23
6,,0221417930e+23
6.0221417930E23
6,0221417930E23
6.0221417930e23
6,0221417930e23
6·0221417930E23
6·0221417930e23
6,,0221417930e23
6.0221417930X10^23
6,0221417930X10^23
6.0221417930x10^23
6,0221417930x10^23
6·0221417930X10^23
6·0221417930x10^23
6,,0221417930x10^23
6.0221417930·10^23
6,0221417930·^23
6.0221417930.10^23
6,0221417930.10^23
6·0221417930·^23
6·0221417930.10^23
6,,0221417930.10^23
但我不知道其他文化(除我之外的文化)是否使用 E 表示 求幂。
【问题讨论】:
-
请注意 - 这确实是一个真实而诚实的问题:真的存在十进制值的小数部分具有“千位”分隔符的文化吗?
-
@Romain:我在 Windows 中没有看到任何区域设置导致
GetNumberFormat使用任何数字分组。
标签: windows winapi localization globalization number-formatting