浮点数中的垃圾值
Posted
技术标签:
【中文标题】浮点数中的垃圾值【英文标题】:Garbage values in floating point number 【发布时间】:2018-06-23 20:40:29 【问题描述】:我正在研究连接到 H2 上的数据库的 java(swing)。我附上了 JFrame 的屏幕截图,我以用户身份输入值,并在数据库中存储了一些垃圾值。 (参考数据库屏幕截图,empid=1300 的第二列)
【问题讨论】:
必读:What Every Computer Scientist Should Know About Floating-Point Arithmetic 和 Is Floating Point Broken? 【参考方案1】:这是因为它们无法准确表示,您应该在 java 中使用BigDecimal
,在 SQL 中使用DECIMAL
。请参阅此处http://www.h2database.com/html/datatypes.html#decimal_type。它说:
DECIMAL 类型:具有固定精度和小数位数的数据类型。这种数据类型 建议用于存储货币值。
DOUBLE 类型:浮点数。不应该用来表示 货币价值,因为四舍五入的问题。如果精度值为 指定为 FLOAT 类型名称,它应该是从 25 到 53。
【讨论】:
以上是关于浮点数中的垃圾值的主要内容,如果未能解决你的问题,请参考以下文章