验证并打印 2 个小数位的双精度值
Posted
技术标签:
【中文标题】验证并打印 2 个小数位的双精度值【英文标题】:Verify and print double value in 2 decimal places 【发布时间】:2016-05-30 16:50:07 【问题描述】:我正在读取一个字符串值并尝试通过此方法确认其值和货币值
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 位的值。我可以为此做哪些更改,并且我是否使用正确的方法进行验证?
【问题讨论】:
使用double.ToString
,如下所述:***.com/questions/18418668/…
我没有看到 double.ToString?我看到和我一样的方法
【参考方案1】:
值的输出方式将取决于实际值。
虽然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
鉴于您说您的代码“这很好用”。那么您的验证步骤是正确的。您正在检查该值是一个数字,并且四舍五入到小数点后 2 位的值是您想要的值。您无需再做任何事情。
【讨论】:
@user5313398 您觉得使用起来最舒服。 6 个月后,当您忘记了这个问题并重新访问代码时,哪一个对您最有意义?选择那个。 我会选择这个 String.Format("0:0.00", value) 但是 0:0.00 的格式是什么?【参考方案2】:您可以尝试使用自定义格式的.ToString()
方法,如下所示:
value.ToString("#.##");
【讨论】:
我试过这个方法 sumValue.ToString("#.##");它仍然一样,为什么你?【参考方案3】:只需使用代码
MessageBox.Show(Convert.ToString(Math.Round(value, 2)));
【讨论】:
以上是关于验证并打印 2 个小数位的双精度值的主要内容,如果未能解决你的问题,请参考以下文章
打印精度高达小数点后 4 位的双精度数据类型 - Armadillo
Java - Decimal Format.parse 返回具有指定小数位数的双精度值