0

在将文本框的值转换Convert.ToSingle()为 2.7 到 2.7999999523162842 等值时增加一些额外的精度。我不想对这个值进行任何四舍五入,因为我必须将用户输入的确切值存储到 DB。因此,如果有人在发布解决方案之前遇到此问题,我们将不胜感激。

4

1 回答 1

3

那是因为 afloat是一个二进制分数,它不能精确地表示数字 2.7 - 当您尝试将一个不是二进制分数的数字分配给 afloat或 adouble时,您将不可避免地得到一个不精确的表示。

decimal如果您不想精确表示像 2.7 这样的十进制数字,则需要使用 a 。

var myDecimal = Convert.ToDecimal(input);

同样,要将此值存储在 sql server 数据库中,您需要使用能够存储精确十进制数字的 SQL 数据类型。decimal方便地,这种数据类型也在 SQL 中调用

于 2013-04-27T06:22:10.250 回答