首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >舍入到浮动值中的5因子值

舍入到浮动值中的5因子值
EN

Stack Overflow用户
提问于 2014-11-17 07:35:56
回答 2查看 137关注 0票数 3

我希望将一个浮点值转换为5因子值,这意味着例如0.05,0.10,0.15

假设我有一个类似于9.48的值,并希望将其转换为9.45

我试过用这个:

代码语言:javascript
复制
val = 9.48
val - val % 0.05

它返回9.450000000000001。这对我有好处,但问题是当我有9.60时,它会将asn转换为9.55

当该值已为5的因数时,它将保持原样。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-17 07:42:10

你可以做这种事

代码语言:javascript
复制
>>> val = 9.68
>>> round(val*20)/20.0
9.6999999999999993
票数 6
EN

Stack Overflow用户

发布于 2014-11-17 08:03:02

这是how floating point numbers are represented的结果--浮点数不能精确地表示9.60。离9.6最近的(64位)浮点数只是稍微小一点的9.6,这就是为什么操作会下降的原因。如果您需要精确的数学操作,那么您应该使用decimal模块而不是float

例如:

代码语言:javascript
复制
val = decimal.Decimal("9.60")
val - val % decimal.Decimal("0.05")

有关浮点数学的深入解释,请参见goldberg.html

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

https://stackoverflow.com/questions/26967667

复制
相关文章

相似问题

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