[英]How to get around with this conversion issue?
我創建了一個GUI,它將一個數值輸入到另一個程序中並將其存儲在tags
。 我有一個奇怪的轉換問題。 當我輸入8.5時,我得到一個字符串8.500000000000000 ...,所以我使用TryParse
和Double.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.