我将文本框中的小数点存储到如下变量中:
decimal hiOld = Decimal.Parse(hiCommOld.Text);
所以,基本上hiOld存储的内容如下:46.88。但是当我这样做时:
ev.hiOldNew = (float)hiOld;
我的系统在DB中存储45.6677878899988(类似这样的)编号。我的DB类型是Float。我想把这个变量作为46.88存储到数据库中。
我该怎么做?
答案 0 :(得分:3)
您实际上正在很好地说明我们为什么需要十进制类型。除少数符合特定要求的数字外,浮点类型不能精确表示数字。就其本质而言,它是近似的。所以你看到的数字与你想要的数字非常接近。
十进制是一种定点类型,它给出了精确的表示,其缺点是它没有双重动态范围。
但是,问题的解决方案只是在数据库中使用正确的类型。假设您使用的是SQL Server,则需要十进制类型:
答案 1 :(得分:1)
我的数据库类型是Double。我只想要 将此变量存储为46.88 DB。
这两句话相互矛盾。如果要将十进制值精确存储在数据库中,请使用DECIMAL或NUMERIC数据库类型。这就是他们的目的。
阅读The Floating-Point Guide了解详情。