当前位置: 首页 > 面试题库 >

为什么python用float提供错误的计算

戚均
2023-03-14
问题内容
x = '16473.6'
y = str(int(float(x) * 1000))
print(y)

>>>16473599

好吧…显然我做错了…我知道这些浮动的东西有时在C#中有点困难…但是我认为* 1000应该可以工作…好吧

有人可以告诉我如何做得更好吗?

非常感谢你


问题答案:

浮点数始终是计算的问题,因为它基于数字的二进制近似值。

您可以检查 浮点算法:问题和局限性

您可以尝试使用 Decimal

x = '16473.6'
y = str(int(Decimal(x) * 1000))
print(y)


 类似资料:
  • 问题内容: 我正在使用: Python 3.4.2 PyMongo 3.0.2 mongolab运行mongod 2.6.9 uWSGI 2.0.10 CherryPy 3.7.0 nginx 1.6.2 uWSGI启动参数: 我一次设置了MongoClient: 我尝试将JSON字典保存到MongoDB: 它通过执行与mongodb相同的代码路径的单元测试来工作。但是,当我使用HTTP POST

  • 当我尝试了所有我自己能找到的解决方案时,我得到了以下错误,比如将整个selenium文件夹复制到主python文件夹,更改路径,使用绝对路径等,作为一个刚刚开始使用python和selenium的新手,我非常感谢您的帮助。 错误:- C:\users\workstation\appdata\local\programs\python\python36-32\python.exe C:/users/

  • 关于浮点数学。2017年是否有可能重新设计计算机/标准,以便 --int(x) --十进制(固定位置,无轨迹x.x或x.xxn)((同时我在下面的答案中创建了一个hack)) --浮子(这里允许小径,就像浮子的深奥本质x. n?) 下面是我写的原文和一段视频,介绍了浮点CppCon 2015: 我正在编写一个迭代器,它将从0.0循环到3.0。 但是当我做=0.2时,结果不是预期的0.2,然后是0.

  • 我正在为两个3位数的乘积生成的最大回文编制程序。但程序给出的结果是999*999=998001有人能说出这个代码中的错误吗? 程序-

  • 开普勒不会这样。卢娜哪里坏了?我在防火墙和代理服务器后面,阻止某些类型的互联网访问。 多谢了。

  • 问题内容: 我已经在Android代码中使用FloatBuffers一段时间了(从一些opengles教程中复制了它),但是我无法确切地理解此构造是什么以及为什么需要它。 例如,我在许多人的代码和android教程中看到了以下代码(或类似代码): 就我所知,这似乎是冗长和混乱的,我只是说它们只是一个浮点数的包装而已。 问题: 与任何其他类型的float集合或简单数组相反,这种类型的类(ByteBu