【发布时间】:2015-01-21 19:01:36
【问题描述】:
我有以下情况,从客户端我得到一个字符串中的双精度值,它可以是“en-GB”格式或“de”格式,即 123.10 或 123,10。但是我需要将这两个数字都转换为 123.10。即我尝试使用 NumberFormatInfo 编写以下测试,但是它没有通过:
var format = new NumberFormatInfo { NumberGroupSeparator = ",", NumberDecimalSeparator = "." };
var a = Double.Parse("23000.10", format);
var b = Double.Parse("23000,10", format);
Assert.AreEqual(a,b);
我做错了什么?
【问题讨论】:
-
您只是确认字符串在 en-GB 中产生不同的值。你已经知道了,测试它没有多大意义。更改为 Assert.AreNotEqual() 以使测试通过。
-
对...如何让它们产生相同的值,而无需手动检查逗号并用小数替换它。?
-
Random.Next将是从用户输入中产生随机结果的更具可读性的方式。23.000,44应该会给你一些有趣的结果......如果不知道输入格式(.Net 术语中的文化),真的没有办法做你想做的事。 -
我添加了一个可以解决您的情况的答案,这不是最好的方法,但始终更改 , for .在你的字符串中。希望对您有所帮助。
标签: c# number-formatting cultureinfo