使用正确的小数点将字符串值转换为十进制

时间:2012-08-29 09:02:09

标签: c# decimal

我有以字符串格式存储的值&我想转换成十进制。

例如:

当我尝试转换为十进制时,我以字符串格式存储了11.10它给了我11.1而不是11.10

我按照以下方式尝试了

string getnumber="11.10";
decimal decinum=Convert.ToDecimal(getnumber);

我也尝试了这个

decinum.ToString ("#.##");

但它返回字符串,我希望这是十进制的。

这可能是什么解决方案?

6 个答案:

答案 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)

11.10表示为小数是11.1,就像是11.100000000000000000000000000000000000。

对于数学过程,不要担心它如何显示自己。如果您正在显示该值,那么将其转换为字符串也不是很重要。请记住

decinum.ToString ("#.##");

返回一个字符串(来自' ToString'函数)而不是转换' decinum'到一个字符串。

答案 5 :(得分:0)

    string getnumber = "11.10";
    double decinum = double.Parse(getnumber);