1
我正在使用斯威夫特计算器,但我遇到了一个小问题:当两个数相乘时,我的结果与普通计算器的结果不一样。如何在Swift中乘以数字?
例如:
在斯威夫特:
0.333328247070312 * 16 = 5.33325195312499
在常规的计算器:
0.333328247070312 * 16 = 5.333251953
我应该怎么做才能得到相同的结果,如雨燕常规计算器?
我正在使用斯威夫特计算器,但我遇到了一个小问题:当两个数相乘时,我的结果与普通计算器的结果不一样。如何在Swift中乘以数字?
例如:
在斯威夫特:
0.333328247070312 * 16 = 5.33325195312499
在常规的计算器:
0.333328247070312 * 16 = 5.333251953
我应该怎么做才能得到相同的结果,如雨燕常规计算器?
您的“常规计算器”在结果打印中看起来不对或很奇怪,所以,您不应该依赖它。我重新检查你在Python3计算这是众所周知的计算都在binary64双和打印最精确的十进制形式:比雨燕输出
>>> 0.333328247070312 * 16
5.333251953124992
它更详细的(一个数字)。你的输出也不能被验证为binary32计算,因为后者有7个正确的十进制数字,并且通常不会打印更多的数字。这个计算器是什么?由于其自定义的6字节浮点数,我假设一些基于Pascal的工具。
试着让计算器打印最详细的表格。如果失败,请将其丢弃并使用最精确的工具进行验证,或者如果您的任务确实得到相同的结果,请详细了解其处理过程。
浮点算法不精确。 [每个计算机程序员应该知道的浮点数](http://blog.reverberate.org/2014/09/what-every-computer-programmer-should.html)。 –
感谢每一个发现我使用Double类型的解决方案,而不是浮动 – abedAssa