使用正确的小数点将字符串值转换为十进制
我有以字符串格式存储的值,我想转换为十进制。
例如:
我有11.10
以字符串格式存储,当我尝试转换为十进制时,它给我11.1
而不是11.10
。
我通过以下方式尝试了它
string getnumber="11.10"; decimal decinum=Convert.ToDecimal(getnumber);
我也尝试了这个
decinum.ToString ("#.##");
但它返回字符串,我希望这个十进制。
这可能是什么解决方案?
如已评论的11.1
与11.10
值相同
decimal one=11.1; decimal two=11.10; Console.WriteLine(one == two);
将输出为true
to string方法中的#formaterter表示一个可选数字,如果它为零则会压缩(并且它有效抑制 – 4.05
的0
不会被抑制)。 尝试
decinum.ToString("0.00");
你会看到字符串值11.10
理想情况下,你实际上想要使用类似的东西
string input="11.10"; decimal result; if (decimal.TryParse(input,out result)) { Console.WriteLine(result == 11.10); } else { // The string wasn't a decimal so do something like throw an error. }
在上面的代码的末尾,结果将是您想要的小数,并且“true”将输出到控制台。
这将完美地运作
string getnumber = "11.10"; decimal decinum = Math.Round(Convert.ToDecimal(getnumber), 2);
decimal
数据类型存储值 。 11.1的值与11.10的值相同 – 在数学上,它们是完全相同的数字,所以它的行为正常。
您似乎想要的是将数字显示为11.10,但这取决于显示它的代码 – 我不知道您是在写入日志文件,在网页上显示还是以任何其他格式显示 – 但是独立于decimal
数据类型的内部表示forms。
没有解决方案,这是预期的行为。 11.10
in string = 11.1
in number
你不能在小数部分存储零,否则11.10
将不同于11.100
,如果你在谈论字符串,这是真的,但如果你在谈论数字则不然。
我认为您的问题仅限于演示级别。 为什么不更好地解释你想做什么。
11.10表示为小数是11.1,就像它是11.100000000000000000000000000000000000。
对于数学过程,不要担心它如何显示自己。 如果您正在显示该值,那么将其转换为字符串也不是很重要。 记住这一点
decinum.ToString ("#.##");
返回一个字符串(来自’ToString’函数)而不是将’decinum’转换为字符串。
string getnumber = "11.10"; double decinum = double.Parse(getnumber);