在.Net中(更具体地说是VB,但这并不重要),有没有一种方法可以严格地通过数字的类型将数字的格式从一个区域性更改为另一个区域性?问题是:在英语中,这个数字是123.45,而在瑞典,这个数字是123.45有没有一种方法可以将123,45转换为123.45,而不必将其转换为字符串(然后使用格式化方法),然后将其转换回正确的类型(single,double等)?
l2osamch1#
这不是将 * 转换为 * 字符串然后 * 返回 * 正确类型的情况-恰恰相反。数字本身没有任何关于它的格式信息。浮点数就是浮点数。只有当您分析或格式化区域性时,区域性才变得相关。如果你已经有了一个浮点值,那么只需要根据阅读它的人的区域性来适当地格式化它。
b4lqfgs42#
将其保留为数字。更改线程的cultureInfo,它将相应地显示,而无需转换。例如:
Thread.CurrentThread.CurrentCulture = New CultureInfo("se-SE") Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
永远不要尝试将数字或日期格式化为字符串,否则你将走向地狱。更新:乔恩在评论中提出了一个需要注意的观点,你会知道它是否适用于你的情况。
l7mqbcuq3#
你可以使用NumberFormatInfo类来实现。
3条答案
按热度按时间l2osamch1#
这不是将 * 转换为 * 字符串然后 * 返回 * 正确类型的情况-恰恰相反。
数字本身没有任何关于它的格式信息。浮点数就是浮点数。只有当您分析或格式化区域性时,区域性才变得相关。
如果你已经有了一个浮点值,那么只需要根据阅读它的人的区域性来适当地格式化它。
b4lqfgs42#
将其保留为数字。更改线程的cultureInfo,它将相应地显示,而无需转换。
例如:
永远不要尝试将数字或日期格式化为字符串,否则你将走向地狱。
更新:乔恩在评论中提出了一个需要注意的观点,你会知道它是否适用于你的情况。
l7mqbcuq3#
你可以使用NumberFormatInfo类来实现。