2017-03-07 80 views
-2

我想在控制台应用程序中计算货币,所以我需要将字符串转换为十进制数。我可以Convert.ToInt32但不能Convert.ToDouble这里是一个例子,用户将输入7位数作为答案。当我可以制作控制台应用程序时,我会用winform开发这个应用程序。任何帮助将非常感谢你。在C#中计算并将字符串转换为双精度值

Console.WriteLine("Please enter the first rate"); 
     NGNRate = Convert.ToInt32(Console.ReadLine()); 

     Console.WriteLine("Please enter the Master rate"); 
     TM_USD_ZAR = Convert.ToInt32(Console.ReadLine()); 

     Console.WriteLine(NGNRate/TM_USD_ZAR); 
+1

[Double.Parse](https://msdn.microsoft.com/en-us/library/fd84bdyt(v = vs.110).aspx)。如果您在处理货币,我会而是使用'decimal'而不是'double' – Pikoh

+1

为什么不能使用'Convert.ToDouble()'? – waka

+1

尝试使用','或'。'作为小数点分隔符,同时转换为双精度 – Fruchtzwerg

回答

1

尝试使用Decimal.Parse,文档here

 Console.WriteLine("Please enter the first rate"); 
     decimal NGNRate = Decimal.Parse(Console.ReadLine()); 

     Console.WriteLine("Please enter the Master rate"); 
     decimal TM_USD_ZAR = Convert.ToDecimal(Console.ReadLine()); 

     Console.WriteLine(NGNRate/TM_USD_ZAR); 
+0

谢谢@ berberck,这是合理的和有效的。我非常感激。 – Oxlade

1

Convert.ToDouble()取决于区域设置和小数点分隔符,如果你有.为小数并输入,转换将不会成功

Console.WriteLine("Please enter the first rate"); 
var NGNRate = Convert.ToDouble(Console.ReadLine()); 

Console.WriteLine("Please enter the Master rate"); 
var TM_USD_ZAR = Convert.ToDouble(Console.ReadLine()); 

Console.WriteLine(NGNRate/TM_USD_ZAR); 
相关问题