Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 0.699x100=69.899999999?_Php_Javascript_Math_Decimal_Floating Accuracy - Fatal编程技术网

Php 0.699x100=69.899999999?

Php 0.699x100=69.899999999?,php,javascript,math,decimal,floating-accuracy,Php,Javascript,Math,Decimal,Floating Accuracy,可能的重复项: 我在php和javascript中看到过这个问题。我有这个号码:float 0.699 如果我这样做: 0.699x100=69.899999999 为什么? 编辑 四舍五入(0.699 x 10,2):浮点运算69.9000000000001浮点运算不精确 有关此问题的更深入讨论,请参阅。浮点运算不精确 有关此问题的更深入讨论,请参阅。Javascript数字是浮点值 看一看。摘录: Javascript中的所有数字都是64位(8 字节)浮点数 产生5e-324的有效范围

可能的重复项:

我在php和javascript中看到过这个问题。我有这个号码:
float 0.699

如果我这样做: 0.699x100=69.899999999

为什么?

编辑


四舍五入(0.699 x 10,2)
:浮点运算69.9000000000001

浮点运算不精确


有关此问题的更深入讨论,请参阅。

浮点运算不精确


有关此问题的更深入讨论,请参阅。

Javascript数字是浮点值

看一看。摘录:

Javascript中的所有数字都是64位(8 字节)浮点数 产生5e-324的有效范围 (负数)至1.7976931348623157e+308 (肯定)在本文发表时 是写的(这可能最终 将来更改为128位为64位 位处理器变得很普遍,而且 ECMA标准不断发展)

整数被认为是可靠的 (不带句点或指数的数字) 符号)至15位(9e15)。 考虑浮点数 只有尽可能可靠,并且没有 更多这是一个特别重要的问题 货币概念 0.06+0.01时的操作将解决 改为0.06999999999,而不是 0.07


Javascript数字是浮点值

看一看。摘录:

Javascript中的所有数字都是64位(8 字节)浮点数 产生5e-324的有效范围 (负数)至1.7976931348623157e+308 (肯定)在本文发表时 是写的(这可能最终 将来更改为128位为64位 位处理器变得很普遍,而且 ECMA标准不断发展)

整数被认为是可靠的 (不带句点或指数的数字) 符号)至15位(9e15)。 考虑浮点数 只有尽可能可靠,并且没有 更多这是一个特别重要的问题 货币概念 0.06+0.01时的操作将解决 改为0.06999999999,而不是 0.07


这在任何语言中都会发生。浮点数和计算机上的其他所有内容一样,以二进制形式存储。数字0.699虽然可以精确地用十进制表示,但可能是二进制的重复十进制,因此无法精确存储


查看浮动是如何存储的,以及发生这种情况的原因。

任何语言都会发生这种情况。浮点数和计算机上的其他所有内容一样,以二进制形式存储。数字0.699虽然可以精确地用十进制表示,但可能是二进制的重复十进制,因此无法精确存储


查看浮动是如何存储的,以及为什么会发生这种情况。

这就是过去帮助我的原因。它与事物如何用二进制表示有很大关系。基本上长话短说,在二进制中,大数的所有实数都没有一个精确的数字

下面的链接将为您更详细地描述这一点


这就是过去帮助我的原因。它与事物如何用二进制表示有很大关系。基本上长话短说,在二进制中,大数的所有实数都没有一个精确的数字

下面的链接将为您更详细地描述这一点


< P> >具体地看IEEE 754和可表示的数的部分。

< P>查看,特别是IEEE 754和可表示的数的部分。

< P>可以在许多编程语言中再现,包括C++和汇编。原因是FPU使用浮点格式。您可以在此处阅读详细信息:


一般规则:永远不要期望浮点运算的精确结果。从不比较两个浮点数,使用间隔,例如:代替测试f1==f2,使用f1>(f2-e)和f1<(f2+e),E是一些小值。

< p>这个行为可以在许多编程语言中再现,包括C++和汇编。原因是FPU使用浮点格式。您可以在此处阅读详细信息:


一般规则:永远不要期望浮点运算的精确结果。不要比较两个浮点数,使用区间,例如:不要测试f1==f2,而是使用f1>(f2-e)和f1<(f2+e),e是一些小值。

1.0+1.0=3表示非常大的11+1=3。将小数点设置为0,这样1就不会是一个大数字。维基百科的文章对此进行了很好的解释,谢谢!1.0+1.0=3表示非常大的11+1=3。将小数点设置为0,这样1就不会是一个大数字。维基百科的文章对此进行了很好的解释,谢谢!另请参见@Chris,仅供参考,您链接到的问题本身就是一个问题dupe@Lord-对不起,我通常会仔细检查。@Chris,别担心;事实上,我知道你知道,因为你是第一个把它标记为傻瓜的人。我想也许你在你的常见重复列表中有一个错误的问题,或者别的什么。另请参见@Chris,仅供参考,你链接到的问题本身就是一个问题dupe@Lord-对不起,我通常会仔细检查。@Chris,别担心;事实上,我知道你知道,因为你是第一个把它标记为傻瓜的人。我想你可能在你的常见重复列表中有一个错误的问题,或者什么。FTA:将无限多个实数压缩成有限位数需要一个近似表示。是的,但正如他们稍后解释的那样,尝试用二进制表示0.1并不容易,尤其是当你被限制在一定的空间内时。1^10表示。00011001^2实际上是。09。。。。。。FTA:将无限多个实数压缩成有限位数需要一个近似表示法。是的,但正如他们稍后解释的那样,用二进制表示0.1并不容易,特别是当你被限制在一定的空间内时。1^10表示。00011001^2实际上是。09。。。。。。一些