首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy float vs decimal.Decimal()

numpy float vs decimal.Decimal()
EN

Stack Overflow用户
提问于 2018-04-13 13:12:39
回答 1查看 2K关注 0票数 1

我的问题是关于标准浮体python类型与decimal.Decimal()的用法。我试图通过API公开一个本地python包。Django rest框架中的序列化过程返回Decimal类型,因为内置的字段DecimalField能够执行基本验证。

如果我将内部函数应用于小数的numpy数组,它就会失败。然而,如果我第一次将它们转换为浮动,一切都会像一种魅力一样运作。因此,问题是:使用某些numpy功能的函数使用Decimal类型不是很节省吗?如果您最终想要调用某些numpy特性,那么在django中执行验证的标准是什么?如果Decimal不是numpy的选择,那么基本上可以忘记DecimalField在Django中进行验证。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-13 14:06:34

十进制比浮子精确得多。如果希望看到差异,请打开Python并尝试:

代码语言:javascript
复制
>>> from decimal import Decimal
>>> Decimal(0.3)
Decimal('0.299999999999999988897769753748434595763683319091796875')
>>> Decimal('0.3')
Decimal('0.3')
>>> 

第一个是从浮点数创建的十进制,另一个是由字符串创建的。正如你所看到的,浮子使用的是一个近似,通常是很好的,但有时却不是。

因此,要么您应该删除Decimal并使用浮点数--在您的情况下,这可能是最好的选择,因为您希望使用numpy --或者用上面所示的近似值将十进制转换成浮点数并返回。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49817898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档