2

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

前任:

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

我通过以下方式尝试过

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

我也试过这个

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

但它返回字符串,我想要十进制。

这可能是什么解决方案?

4

6 回答 6

4

正如已经评论11.1过的,它的值与11.10

decimal one=11.1;
decimal two=11.10;
Console.WriteLine(one == two);

将输出true

to string 方法中的#格式化程序表示一个可选数字,如果它为零,则会抑制(并且抑制是有效的 - 0in4.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”将输出到控制台。

于 2012-08-29T09:15:02.907 回答
2

这将完美地工作

string getnumber = "11.10";
decimal decinum = Math.Round(Convert.ToDecimal(getnumber), 2);
于 2012-08-29T09:36:51.750 回答
1

decimal数据类型存储一个。11.1 的值与 11.10 的值相同 - 从数学上讲,它们是完全相同的数字,因此它的行为正确。

您似乎想要将数字显示为 11.10,但这取决于显示它的代码 - 我不知道您是在写入日志文件、在网页上显示还是在任何其他格式上显示 - 但那独立于数据类型的内部表示decimal

于 2012-08-29T09:05:52.783 回答
1

没有解决方案,这是预期的行为。 11.10在字符串中 =11.1在数字中

您不能在小数部分存储零,否则11.10将不同于11.100,如果您谈论的是字符串,则这是正确的,但如果您谈论的是数字,则不是。

我认为您的问题仅在演示级别上。你为什么不更好地解释你想要做什么。

于 2012-08-29T09:06:02.803 回答
1

用小数表示的 11.10 是 11.1,就像它是 11.1000000000000000000000000000000000000 一样。

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

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

正在返回一个字符串(来自“ToString”函数),而不是将“decinum”转换为字符串。

于 2012-08-29T09:06:11.630 回答
0
    string getnumber = "11.10";
    double decinum = double.Parse(getnumber);
于 2012-08-29T09:14:23.203 回答