2016-05-30 52 views
0

我读一个字符串值,并尝试通过此方法验证和2位小数打印双重价值

double value; 
if (!double.TryParse(sumValue, out value) || Math.Round(value, 2) != value) 
{ 
    MessageBox.Show("Not a double value"); 
} 

这工作得很好,以确认其价值的货币价值。这个问题,当我使用这个MessageBox.Show(Math.Round(value, 2))它没有显示在2位小数的值。我可以为此做些什么改变,并且是否使用正确的方法进行验证?

+0

使用'double.ToString'如下所述:http://stackoverflow.com/questions/18418668/formatting-a-double-to-two-decimal-places – csharpfolk

+0

我没有看到double.ToString?我看到像我一样的方法 – user5313398

回答

2

如何输出值取决于实际值。

虽然Math.Round(value, 2)会将值舍入为小数点后两位,如果该舍入值为1.00或1.50(例如),默认情况下忽略尾随零将显示为“1”或“1.5”。

如果要将值显示为2位小数,则有多种方法可以执行此操作。所有要求您调用string.Format或用格式参数明确呼叫.ToString

一种是使用:

MessageBox.Show(String.Format("{0:0.00}", value)); 

第一个“0”代表本身的数量和在“0.00”表示在格式化引擎,这是两个小数的浮点数。您可以使用“#:##”代替。

Source

另一个是:

MessageBox.Show(value.ToString("F")); 

哪个是定点格式说明符。添加数字指定小数位数(2是默认值)。 Source

鉴于你说你的代码“这工作正常”。那么你的验证步骤是正确的。您正在检查该值是一个数字,并且四舍五入到小数点后两位的值是您想要的值。没有什么需要你做的了。

+0

验证过程如何正确执行? – user5313398

+0

你的方法是否有效?那么最好选择什么? – user5313398

+0

@ user5313398哪一个你觉得最舒服的使用。在你忘记这个问题并重新访问代码的6个月时间里,哪一个对你最有意义?挑一个。 – ChrisF

1

你可以尝试使用.ToString()方法与自定义格式,例如:

value.ToString("#.##"); 
+0

验证过程如何正确执行? – user5313398

+0

我试过这个方法sumValue.ToString(“#。##”);它仍然是为什么你呢? – user5313398

1

只需使用代码

MessageBox.Show(Convert.ToString(Math.Round(价值2 )));