C# TableAdapter执行奔腾数学
我有一个项目,用户可以在文本框中输入小数。现在,我将该值转换为一个可为空的浮点变量,并将其传递给tableAdapter以插入或更新DB 现在这里是它得到wierd的地方,如果我给它一个.24的值,这就是传递给tableAdapter的值,但是,当我查看保存到数据库中的内容时,它被转换为0.2399999463582 我对它进行了调试,直到TableAdapter的insert调用为止,它被传递了一个.24的值。我的SQL server数据库列具有浮点类型 你知道为什么会这样吗?我需要切换到十进制吗C# TableAdapter执行奔腾数学,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有一个项目,用户可以在文本框中输入小数。现在,我将该值转换为一个可为空的浮点变量,并将其传递给tableAdapter以插入或更新DB 现在这里是它得到wierd的地方,如果我给它一个.24的值,这就是传递给tableAdapter的值,但是,当我查看保存到数据库中的内容时,它被转换为0.2399999463582 我对它进行了调试,直到TableAdapter的insert调用为止,它被传递了一个.24的值。我的SQL server数据库列具有浮点类型 你知道为什么会这样吗?我需要切换到十进
谢谢解决方案是2表示的内力 浮点数 有些分数不能很好地表示 请在此处阅读更多信息: 切换到十进制将在这里起作用,但也会影响性能。
大约比float慢10倍,但您可能永远不会注意到它解决方案是2表示的内力 浮点数 有些分数不能很好地表示 请在此处阅读更多信息: 切换到十进制将在这里起作用,但也会影响性能。
比float慢10倍,但您可能永远不会注意到它decimal?还是双倍/浮动?因为0.23999494635582是double/float的典型值,正如他所说,这是预期的行为.float。看看我的表answer@Luxspes:所有内容都定义为浮点,没有double。double和float的行为相同。为什么要使用float?尝试改用十进制/数字。FLOAT的这种行为是有原因的。decimal?还是双倍/浮动?因为0.23999494635582是double/float的典型值,正如他所说,这是预期的行为.float。看看我的表answer@Luxspes:所有内容都定义为浮点,没有double。double和float的行为相同。为什么要使用float?尝试改用十进制/数字。FLOAT的这种行为是有原因的。我不相信这是FLOAT无法处理的事情,至少在DB端,C端似乎处理得很好。我开始在里面输入很多非常简单的数字,结果错的比对的多。浮点数在SQL server中就是那么一文不值?浮点数在二进制中就是那么一文不值。阅读链接@利米-你也可以对十进制说同样的话!你如何用十进制表示1/3的值?还是圆周率?还是Sqrt2?这里也一样。有些浮点数不能用二进制精确表示。@ChrisDunaway:同意,对于运行中的数字,您最终将不得不截断或舍入,但是,我给它一个较短的数字,一个浮点数应该可以轻松容纳;我有一个更长的。如果我不能用.24或.17这样一个简单的值来分配一个浮点,我看不出它有多大的价值。你可以在这里使用一个浮点,但你必须四舍五入才能得到一个好的结果。十进制应该和货币值一起使用,但这不是这里的要求。我不相信这是浮动无法处理的事情,至少在DB端,C端似乎处理得很好。我开始在里面输入很多非常简单的数字,结果错的比对的多。浮点数在SQL server中就是那么一文不值?浮点数在二进制中就是那么一文不值。阅读链接@利米-你也可以对十进制说同样的话!你如何用十进制表示1/3的值?还是圆周率?还是Sqrt2?这里也一样。有些浮点数不能用二进制精确表示。@ChrisDunaway:同意,对于运行中的数字,您最终将不得不截断或舍入,但是,我给它一个较短的数字,一个浮点数应该可以轻松容纳;我有一个更长的。如果我不能用.24或.17这样一个简单的值来分配一个浮点,我看不出它有多大的价值。你可以在这里使用一个浮点,但你必须四舍五入才能得到一个好的结果。十进制应与货币值一起使用,但这不是此处的要求。