我有以字符串格式存储的值&我想转换成十进制。
例如:
当我尝试转换为十进制时,我以字符串格式存储了11.10
它给了我11.1
而不是11.10
。
我按照以下方式尝试了
string getnumber="11.10";
decimal decinum=Convert.ToDecimal(getnumber);
我也尝试了这个
decinum.ToString ("#.##");
但它返回字符串,我希望这是十进制的。
这可能是什么解决方案?
答案 0 :(得分:4)
已评论11.1
的值与11.10
decimal one=11.1;
decimal two=11.10;
Console.WriteLine(one == two);
将输出true
to string方法中的#
格式化程序意味着一个可选数字,如果它为零则会压缩(并且它有效抑制 - 0
中的4.05
不会。被压制)。试试
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"将输出到控制台。
答案 1 :(得分:2)
这将完美地运作
string getnumber = "11.10";
decimal decinum = Math.Round(Convert.ToDecimal(getnumber), 2);
答案 2 :(得分:1)
decimal
数据类型存储值。 11.1的值与11.10的值相同 - 在数学上,它们是完全相同的数字,所以它的行为正常。
您似乎想要的是显示数字为11.10,但这取决于显示它的代码 - 我不知道您是否正在写入日志文件,显示在网页或任何其他格式 - 但这与decimal
数据类型的内部表示无关。
答案 3 :(得分:1)
没有解决方案,这是预期的行为。 数字
中的字符串=11.10
中的11.1
你不能在小数部分存储零,否则11.10
将不同于11.100
,如果你在谈论字符串,那就是如此,但如果你在谈论数字则不然。
我认为您的问题仅限于演示文稿级别。为什么不更好地解释你想做什么。
答案 4 :(得分:1)
对于数学过程,不要担心它如何显示自己。如果您正在显示该值,那么将其转换为字符串也不是很重要。请记住
decinum.ToString ("#.##");
返回一个字符串(来自' ToString'函数)而不是转换' decinum'到一个字符串。
答案 5 :(得分:0)
string getnumber = "11.10";
double decinum = double.Parse(getnumber);