簡體   English   中英

如何解決這個轉換問題?

[英]How to get around with this conversion issue?

我創建了一個GUI,它將一個數值輸入到另一個程序中並將其存儲在tags 我有一個奇怪的轉換問題。 當我輸入8.5時,我得到一個字符串8.500000000000000 ...,所以我使用TryParseDouble.ToString()方法來解決此問題。 但是奇怪的是,當我嘗試使用6.9時,字符串變成6.9000000005367431600000。我使用2 dll,這可能是導致此問題的原因。 我已經閱讀了小數的解釋,但是我不明白如何解決這個問題。 如何解決這個轉換問題?

我的轉換方法

    private bool TryWrite()
            {
// Read() returns a string(which represents int,double, float or string) read from another application
                string Oldcopy = _inTouchWrapper.Read(tagNameBox.Text);
// Write() Write my input number into the application stored in a specific tag
                _inTouchWrapper.Write(tagNameBox.Text, ValueBox.Text);
//OldCopy is to input back the old copy is the Write (new copy) cannot be performed
                string newCopy = _inTouchWrapper.Read(tagNameBox.Text);

                if (ValueBox.Text == Double.Parse(newCopy).ToString())
                {
                    return true;
                }
                else
                {
                    _inTouchWrapper.Write(tagNameBox.Text, Oldcopy);
                    return false;
                }
            }

有關軟件/和我的代碼的更多說明。 該軟件具有標簽ex:Alarm1,TimeString ...每個標簽都有一個類型(int,real(浮點數),字符串)和一個值。 此值取決於類型。 如果代碼類型為int,則無法輸入5.6。 因此,我創建了此方法,以驗證輸入值確實可以在軟件中添加。 工作原理 :我在軟件中輸入了一個值,將其讀回,如果添加的值與讀取的值匹配,則我確實輸入了它。 否則,我輸入回oldCopy。

似乎字符串“ 6.9”沒有直接轉換為double。 If首先轉換為float,然后轉換為double。 這是一個例子:

var f = float.Parse("6.9");
var d = (double)f;
System.Diagnostics.Debug.WriteLine(d.ToString()); //6.90000009536743

PS:為什么您對'8.5'沒有相同的問題,因為它可以精確地以二進制形式表示。

暫無
暫無

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

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