【问题标题】:Value from masked text box getting rounded掩码文本框中的值四舍五入
【发布时间】:2015-09-15 14:37:18
【问题描述】:

我正在尝试将 Single 的值设置为 Masked Text Box 的转换值。

我的蒙版文本框的蒙版是“00.000000°”,这意味着它最多填充 6 个小数点并将其显示为度数。所以说我的初始值为40.12345,它会显示“40.123450°”。

这是我用来转换它的代码行,其中d 是 Single,msk 是 Masked Text Box:

d = CSng(msk.Text.Replace("°", "").Trim)

不过,无论出于何种原因,d 的值最终都是框的内容,但四舍五入到最接近的 5 个小数点!所以说我把它改成40.123457d 的值最终是“40.12346”。

我不知道为什么会这样。

【问题讨论】:

    标签: vb.net maskedtextbox


    【解决方案1】:

    Single 的精度较低。如果你想要一个精确的数字,我建议你改用Decimal

    Dim d As Decimal
    
    d = Decimal.Parse("40.123457°".Replace("°", "").Trim)
    

    【讨论】:

    • OK - 看起来像使用 Decimal.Parse 然后将其放入 Double 工作。奇怪...我认为 Single 应该能够处理 6 个小数点...谢谢!
    • @Andarta Single 在某些情况下可以处理 6 位小数,1.123456 有效,11.123456 无效。使用 double 你仍然可以遇到这些问题。十进制将保证数字是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2012-08-04
    相关资源
    最近更新 更多