无法将浮点数转换为十进制。请先将浮点数转换为字符串
我遇到了以下错误:
02/08 09:15:45> 小数价格:0.00
02/08 09:15:45> 小数价格 = None
类型错误:无法将浮点数转换为小数。首先需要将浮点数转换为字符串
这是我的代码:
s.price = Decimal("%.2f" % (float(request.data['subscription_price'])))
log('Decimal price: %s' % s.price)
if s.price == Decimal("0.00"):
s.price = None
log('Decimal price = None')
你们有什么想法我哪里出错了吗?我试过一个方法,想通过“如果 s.price 等于小数("0.00")”来避免在数据库里保存0.00,但没有成功。
2 个回答
0
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个功能时,发现它并没有按照预期的方式工作。这种情况很常见,尤其是在代码中出现错误或者不兼容的情况下。
解决这些问题的第一步是仔细阅读错误信息。错误信息通常会告诉我们出错的地方,虽然有时候它们看起来很复杂,但其实它们是帮助我们找到问题的线索。
另外,查看相关的文档或教程也是一个好主意。很多时候,文档中会有解决常见问题的建议,或者提供一些示例代码,帮助我们更好地理解如何使用某个功能。
如果自己解决不了,可以考虑向社区求助,比如在论坛上发帖,描述自己的问题,通常会有经验丰富的人愿意提供帮助。
总之,遇到问题时不要着急,慢慢分析,查找资料,必要时寻求帮助,这样才能更好地解决问题,提升自己的编程能力。
if str(s.price) == str(Decimal("0.00")):
s.price = None
log('Decimal price = None')
0
如果你想把浮点数转换成小数,并且保留两位小数,这段代码可以帮你做到:
import Decimal
In [10]: a = 7.3656
In [11]: Decimal(a).quantize(Decimal('.01'))
Out[11]: Decimal('7.37')
关于如何处理小数的更多信息,你可以在这里找到: http://docs.python.org/2/library/decimal.html