【问题标题】:ERROR Decimal Number VB.NET错误十进制数 VB.NET
【发布时间】:2023-03-07 17:08:01
【问题描述】:

由于某种原因无法正常工作。

Imports System.Math

Public Class Form1

Dim TheWholeNumber As Double
Dim TheRoundedNumber As Double

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'The Whole Number.
TheWholeNumber = Math.Truncate(Val(Tx_TheNumber.Text))
Tx_TheWholeNumber.Text = TheWholeNumber.ToString

'The Decimal Number
Tx_TheDecimalNumber.Text = (Val(Tx_TheNumber.Text).ToString - Val(Tx_TheWholeNumber.Text)).ToString

所以我将 9876543210.0123456789 输入到 Tx_TheNumber 文本框。

在 Tx_TheWholeNumber 文本框中给我截断数字没有问题。 它在 Tx_TheDecimalNumber 文本框中显示 '9876543210。

但问题是:Tx_TheDecimalNumber.Text 显示 0.0123405456542969

我想.. whaaat?从整数中减去整数有多难.. 这就是你给我的..?

是整数减去小数点后的数字,即Tx_TheNumber。老实说,我不知道发生了什么,看到如果你这样做,结果将是小数点后的数字。

Math.Truncate 是一个 Double。 Decimal.Truncate 是小数。所以..有人可以帮我吗?我不知道我做错了什么。

Val(Tx_TheTextBox.Text) 将 String 转换为 Double。我经常使用它。当我计算东西时,Val 给我错误的答案永远不会有任何问题。我用它构建了一个欧姆定律计算器,我的数字与在线欧姆定律计算器相匹配。所以..

【问题讨论】:

    标签: .net vb.net floating-point decimal


    【解决方案1】:

    您的问题是您使用的是 Val,它返回 Double 而不是 Decimal 浮点运算本质上容易出错。

    解决方案?转换为 Decimal 数据类型并减去这些:

    使用十进制数据类型

    Dim TheWholeNumber As Decimal
    Dim TheRoundedNumber As Decimal
    

    转换为十进制而不是使用Val

        'The Whole Number.
        TheWholeNumber = Math.Truncate(CDec(Tx_TheNumber.Text))
        Tx_TheWholeNumber.Text = TheWholeNumber.ToString
    
        'The Decimal Number
        Tx_TheDecimalNumber.Text = (CDec(Tx_TheNumber.Text) - CDec(Tx_TheWholeNumber.Text)).ToString
    

    注意:您还通过将数字数据类型转换为字符串并使用它进行减法来引入问题。使用Option Strict On 将防止这些类型的错误编译,所以你应该使用它

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 2022-01-16
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多