【问题标题】:Python floats giving strange responses [duplicate]Python浮动给出奇怪的响应[重复]
【发布时间】:2020-08-26 21:01:28
【问题描述】:

我正在编写一个程序来处理相互添加浮点数并发现一些奇怪的东西。

例子

---INPUT---
print(1+0.1)
print(1-0.1)
---OUTPUT---
1.10000000000001
0.99999999999999

为什么会发生这种情况,我该如何阻止它?

【问题讨论】:

  • @roy 对我没有帮助,在我发布之前已经看过它
  • 那你为什么不在你的问题中提到这一点呢? 展示你的研究。典型的骗子是stackoverflow.com/q/588004/3001761
  • 关于“我没有复制和粘贴任何东西,但我有点夸大其词”:在问题中呈现不正确的数据并不是获得正确答案的正确技术,并且会破坏问题的可能性将来会为任何其他读者服务。 Stack Overflow 旨在为所有人提供问题和答案的持久存储库,而不是作为您的个人教学服务。
  • @DanHowe:我们收到各种知识水平的问题和读者。不正确的数据可能是提问者概念错误、他们误报数据、误读数据或其他问题的迹象。呈现不正确数据的读者可能不具备识别和补偿数据所需的知识。如果您不保持价值正确性并提供不正确的数据,则可能会被否决。

标签: python math floating-point python-3.7 arithmetic-expressions


【解决方案1】:

为了做到这一点而不是使用浮点数,我使用了一个列表,其中列表的每个值由我需要的浮点数的每个部分表示。这并不总是最好的解决方案,但对于我需要的更广泛的应用来说,这是最好的解决方案!

例如

10 1 0.1 0.01
[5, 4, 0, 1]
=> 54.01

【讨论】:

  • 我希望你不需要移动那个小数点!
  • @PaddyHarrison 我不需要这个数字将被封顶!
  • Python 有一个Decimal type,它比您的解决方案要好得多,或者至少更容易使用。而且,更好的是,您不必为它调试和维护任何代码。
  • @PresidentJamesMoveonPolk 任何指向我可以用来学习的帖子的链接,因为当我刚刚查看时,我找不到任何东西,我不知道你的意思
  • @PresidentJamesMoveonPolk 哦,拍摄所以你做了啊哈,我没看到哎呀
猜你喜欢
  • 2017-03-02
  • 1970-01-01
  • 2020-08-12
  • 2021-05-16
  • 2014-07-29
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多