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

C# 在C语言中,将文本框值转换为单个值增加了额外的精度#,c#,.net,floating-point,decimal,numerics,C#,.net,Floating Point,Decimal,Numerics,将文本框的值转换为Convert.ToSingle()会为2.7到2.7999959523162842等值增加一些额外的精度。我不想对这个值进行任何舍入,因为我必须将用户输入的精确值存储到DB中。因此,如果任何人之前有这个问题,请发布解决方案,任何帮助都将不胜感激。这是因为a是一个不能准确表示数字2.7的数字——当你试图将一个不是二进制分数的数字分配给一个浮点或一个双精度,你将不可避免地得到一个不精确的表示 如果不想精确地表示十进制数,如2.7,则需要使用 var myDecimal = Con

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

这是因为a是一个不能准确表示数字2.7的数字——当你试图将一个不是二进制分数的数字分配给一个
浮点
或一个
双精度
,你将不可避免地得到一个不精确的表示

如果不想精确地表示十进制数,如2.7,则需要使用

var myDecimal = Convert.ToDecimal(input);
类似地,要在sql server数据库中存储此值,需要使用能够存储精确十进制数字的sql数据类型。通常,这种数据类型在SQL中也被调用,这是因为a是一个不能精确表示数字2.7的a——当您尝试将一个不是二进制分数的数字分配给一个
浮点数
双精度
时,您将不可避免地得到一个不精确的表示

如果不想精确地表示十进制数,如2.7,则需要使用

var myDecimal = Convert.ToDecimal(input);
类似地,要在sql server数据库中存储此值,需要使用能够存储精确十进制数字的sql数据类型。通常,这种数据类型也在SQL中调用