错误十进制数VB.NET

时间:2016-01-25 10:12:06

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

由于某种原因,它无法运作。

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 TextBox中给出截断数字没有问题。 它在Tx_TheDecimalNumber TextBox中显示	 9876543210。

但问题是:Tx_TheDecimalNumber.Text显示0.0123405456542969

我喜欢...... whaaat?从整数中减去整数有多难 这就是你给我的东西..?

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

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

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

1 个答案:

答案 0 :(得分:0)

您的问题是您正在使用Val返回Double而不是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将阻止编译这些类型的错误,因此您应该使用它