Perl / mysql浮点数不精确

维杰·博亚帕蒂(Vijay Boyapati)

我正在使用Perl与mysql数据库通信浮点数。我在perl中执行乘法:

 $var = 0.001 * 3;

然后,我将此值存储在mysql数据库中类型为DOUBLE的列中。我稍后检索结果,对数字进行进一步的乘法和加法,然后将其存储回数据库中

$previous_result_from_db += 0.001*1 + 0.001*0.5.

存储在数据库中的结果应为0.0045,但我得到的是:0.0045000000000000005我试图了解不精确度的来源。是Perl还是数据库?避免这种不精确的处理浮点交互的正确方法是什么?

谢谢!

比尔·卡文(Bill Karwin)

“ 10.0乘以0.1几乎永远不会是1.0” – Brian Kernighan,编程风格的要素

FLOAT和DOUBLE的局限性是它们是不精确的数字数据类型。这内置于IEEE 754格式的设计中。它会影响使用此格式存储浮点数的所有编程语言。

MySQL在此附录中对此进行了记录:B.5.5.8浮点值问题

PHP在警告:浮点精度中对此进行了说明

如果要在MySQL中使用可缩放的数值数据类型来避免这种舍入行为,请使用DECIMAL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

浮点数除法

来自分类Dev

浮点数字

来自分类Dev

perl从字符串中提取/匹配最后一个浮点数

来自分类Dev

Perl / mysql浮点数不精确

来自分类Dev

两个具有相同浮点的精确表示的浮点数之间的相减会不精确吗?

来自分类Dev

浮点数的整数

来自分类Dev

PHP奇怪的浮点不精确度

来自分类Dev

使用Perl分割浮点数

来自分类Dev

AWK浮点数

来自分类Dev

在浮点数中精确到小数点后求位数,直至精确度

来自分类Dev

浮点数范围

来自分类Dev

MySQL浮点数被意外舍入

来自分类Dev

浮点数范围

来自分类Dev

浮点数的精度

来自分类Dev

如何防止Perl中的浮点数四舍五入?

来自分类Dev

比较浮点数

来自分类Dev

浮点溢出和不精确

来自分类Dev

如何使浮点数精确到8位?

来自分类Dev

从浮点数创建有理数会得出不精确的结果

来自分类Dev

C ++我刚刚读到浮点数是不精确的,并且不存储确切的整数值。这是什么意思?

来自分类Dev

perl从字符串中提取/匹配最后一个浮点数

来自分类Dev

为什么'sort {$ a- $ b}(浮点数列表)'在Perl中不起作用?

来自分类Dev

使用Perl分割浮点数

来自分类Dev

比较MySQL中的浮点数?

来自分类Dev

打印浮点数的精确值

来自分类Dev

如何防止Perl中的浮点数四舍五入?

来自分类Dev

浮点数的乘积

来自分类Dev

浮点数精度

来自分类Dev

Perl、JSON、浮点数、引号