错误十进制数 VB.NET

ERROR Decimal Number VB.NET

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

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

所以我在 Tx_TheNumber 文本框中输入 9876543210.0123456789。

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

但问题是:Tx_TheDecimalNumber.Text 显示 0.0123405456542969

我就像..什么?从整数中减去整数有多难.. 这就是你给我的..?

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

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

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

您的问题是您使用的 Val returns 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 将防止这些类型的编译错误,因此您应该使用它