簡體   English   中英

錯誤十進制數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是雙精度型。 Decimal.Truncate是十進制。 所以..有人可以幫我嗎? 我不知道我在做什么錯。

Val(Tx_TheTextBox.Text)將字符串轉換為Double。 我經常使用。 當我計算東西時,Val永遠不會給我錯誤答案。 我用它建立了歐姆定律計算器,我的數字與在線歐姆定律計算器匹配。 所以..

您的問題是,您使用的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將防止編譯這些類型的錯誤,因此您應該使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM