我创建了一个 GUI,它将一个值编号输入另一个程序并将它们存储在tags
. 我有一个奇怪的转换问题。当我输入 8.5 时,我得到一个字符串 8.500000000000000... 所以我使用TryParse
andDouble.ToString()
方法来解决这个问题。但奇怪的是,当我尝试使用 6.9 时,字符串变为 6.9000000005367431600000。我使用了 2 个 dll,这可能是导致此问题的原因。我已阅读此Decimals 解释,但我不明白如何解决我的问题。如何解决这个转换问题?
我的转换方法
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(a float)、string)和一个值。该值取决于类型。如果标签类型是 int,我无法输入 5.6。所以我创建了这个方法来验证输入值是否确实可以添加到软件中。它是如何工作的:我在软件中输入一个值,将其读回,如果添加的值与读取的值匹配,我确实输入了它。否则,我输入回 oldCopy。