2012-08-29 42 views
2

我将值存储为字符串格式&我想将其转换为十进制数。将字符串值转换为具有正确小数点的十进制数

例如:

我已经存储在字符串格式11.10当我尝试转换成十进制它给我11.1而不是11.10

我尝试了通过以下方式

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

我想这也

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

但它返回的字符串,我想这在小数。

这可能是什么解决方案?

+3

小数'11.1 = 11.10' :) –

+0

在看这个问题-HTTP://stackoverflow.com/questions/4264736/convert-string-to-decimal-c -sharp – Buzz

+1

'11.1'' 11.10'' 11.100000000000'有什么区别?无......有人错过了一些课:) – Reniuz

回答

3

如已经评论11.1是相同的值11.10

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

威尔输出true

#格式化器在到串方法意味着可选的位,并且如果它是零将剿(这是有效的压制 - 04.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. 
} 

在上面的代码中结束,结果将是小数你想要和“真”将被输出到控制台。

1

A decimal数据类型存储。 11.1的数值与11.10的数值完全相同 - 它们是完全相同的数字,所以它的行为是正确的。

你似乎想要的是显示数字为11.10,但这取决于显示它的代码 - 我不知道你是否正在写入日志文件,显示在网页上或任何其他格式 - 但与数据类型decimal的内部表示无关。

1

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

您在小数部分斜面店零,否则11.10将比11.100,如果你谈论的是字符串但如果你正在谈论的数字哪个是真的有所不同。

我认为你的问题仅限于演示级别。你为什么不更好地解释你想做什么。

1

11.10以十进制表示为11.1,就像它是11.100000000000000000000000000000000000一样。

对于数学过程,不要担心它如何显示自身。如果你显示的值,然后将其转换成一个字符串也没有biggie。请记住,

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

被(从“的ToString”功能)返回一个字符串和“decinum”不转换为字符串。

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

这将很好地工作

string getnumber = "11.10"; 
decimal decinum = Math.Round(Convert.ToDecimal(getnumber), 2); 
相关问题