我創建了一個GUI,它將一個數值輸入到另一個程序中,並將它們存儲在tags
中。我有一個奇怪的轉換問題。當我輸入8.5時,我得到一個字符串8.500000000000000 ...所以我使用TryParse
和Double.ToString()
方法來解決這個問題。但奇怪的是,當我嘗試6.9字符串變成6.9000000005367431600000.I使用2 DLL可能是這個問題的原因。我讀過這Decimals explanation,但我不明白這是如何解決我的問題。如何解決這個轉換問題?如何解決此轉換問題?
我的轉換方法
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;
}
}
更多解釋有關軟件/和我的代碼。該軟件的標籤例如:Alarm1,TimeString ... 每個標籤都有一個類型(int,real(float),string)和一個值。該值取決於類型。如果標籤類型是int,我不能輸入5.6。所以我創建了這種方法,驗證是否確實可以在軟件中添加輸入值。 它是如何工作的:我在軟件中輸入一個值,讀回來,如果添加的值與讀取值匹配,我的確輸入了它。否則,我輸入舊的拷貝。
可能是一個2 DLL的問題?你測試了嗎?您可以使用.ToString(「N1」)來獲取一位小數。 – Paparazzi
@Blam,我還是一個新手程序員,我不知道如何測試一個DLL。 我已經從Telerik下載JustDecompile並嘗試瞭解它,但我沒有創建dll。做這件事的人說,在dll中可能存在轉換問題。 –
@Blam謝謝,我沒有想過重載的ToString。我最近了解到一些.net功能已經超載。 –