验证并打印 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 返回具有指定小数位数的双精度值

在 Scala Java Play 框架中格式化没有小数的双精度并为数千添加逗号

格式,Java 中的双精度和整数的 2 位小数和 0

如何格式化数据库中的双精度数据并在 Android 上使用逗号作为小数分隔符设置到 Textview