将文本框值转换为单个值在c#中增加了额外的精度

本文关键字:增加 精度 文本 转换 单个值 | 更新日期: 2023-09-27 18:11:02

而将文本框的值转换为Convert.ToSingle()会为2.7到2.7999999523162842等值增加一些额外的精度。我不希望对这个值进行任何舍入,因为我必须将用户输入的确切值存储到DB中。因此,如果有人有这个问题,请张贴解决方案,任何帮助将不胜感激。

将文本框值转换为单个值在c#中增加了额外的精度

这是因为float是一个二进制分数,不能精确地表示数字2.7—当您试图将一个不是二进制分数的数字分配给floatdouble时,您将不可避免地以不精确的表示结束。

如果你不想精确地表示像2.7这样的十进制数,你需要使用decimal

var myDecimal = Convert.ToDecimal(input);
同样,要在sql server数据库中存储此值,您需要使用能够存储精确十进制数字的sql数据类型。按照惯例,这种数据类型在SQL中也称为decimal