如何解决float类型的2.3 插入到数据库时就成2.29999999999999这个问题?
如题 当然不能修改数据库字段的类型 类型是float 类型
------解决方案-------------------- float是单精度数啊 2.3是对的啊
------解决方案--------------------你可以在用户输入后 然后在四舍五入一下 取小数点后一位小数
我现在从不用float类型 恶心死了 只用varchar和int
------解决方案--------------------
------解决方案--------------------decimal
------解决方案--------------------用decimal吧
------解决方案--------------------LZ可以看下,数据变化的时机:
1. 在SQL语句里,值已经发生变化,这种问题可以通过程序控制
2. SQL语句执行后,值发生变化,这个部分属于系统问题了
------解决方案--------------------你把整条记录取出来,然后单独修改浮点数的值,最后再把它更新到数据库中就行了
------解决方案-------------------- float本就是近似值,它不是精確值。
通俗點講float是有兩個值的,一個是Text,就是你在DB中看到的數字,如2.3,另一個則是Value,就是它真實的值,也就是2.299999999999.
所以在做四舍五入、精確的Report、比較(只能用<、>而不能用=)時請盡量避免使用float類型。建議使用Decimal類型或者Numeric類型。
如果LZ不想改變類型可以嘗試這樣,select convert(num as decimal(10,3)) from tb
------解决方案--------------------我也间碰到同样的问题,关注
------解决方案--------------------decimal
------解决方案--------------------Decimal类型可以直接设置小数点后的小数位......
------解决方案--------------------
------解决方案--------------------lz如果插入后显示的是2.3,插入前是2.3吗?
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------带小数点的我全用DOUBLE
------解决方案--------------------Decimal
------解决方案--------------------