如何围绕浮点数的一半 Python?
我遇到了这个功能的奇怪行为
:
此代码打印:
我预期的浮动价值将永远以大的方式舍入,而是它们被围绕到最近的偶数。
为什么这种行为,以及获得正确结果的最佳方式是什么?
我试着用
https://docs.python.org/3.5/library/fractions.html
, 但结果是一样的。
round//
:
for i in range/1, 15, 2/:
n = i / 2
print/n, "=>", round/n//
此代码打印:
0.5 => 0
1.5 => 2
2.5 => 2
3.5 => 4
4.5 => 4
5.5 => 6
6.5 => 6
我预期的浮动价值将永远以大的方式舍入,而是它们被围绕到最近的偶数。
为什么这种行为,以及获得正确结果的最佳方式是什么?
我试着用
https://docs.python.org/3.5/library/fractions.html
, 但结果是一样的。
没有找到相关结果
已邀请:
16 个回复
石油百科
赞同来自:
它清楚地编写了这种行为:
round/x[, n]/
x
之前四舍五入 n 数字,四舍五入甚至。 如果一个 n 省略,然后默认为相等 0.
注意
四舍五入甚至
. 它也被称为
舍入银行家
; 而不是始终围绕或向下舍入 /加重舍入错误/, 县到最近的
甚至
数字,你平均舍入错误。
如果您需要更多地控制舍入行为 , 使用
https://docs.python.org/3/library/decimal.html
, 这允许您准确表明什么
https://docs.python.org/3/libr ... modes
.
例如,从一半开始:
石油百科
赞同来自:
冰洋
赞同来自:
它将正确地向上或向下绕数。
快网
赞同来自:
取决于数字是偶数还是奇数,它将被向上或向下舍入。 简单的方式只绕它:
如果您希望它正常工作以进行负数,请使用:
请注意,它可以破坏大数字或真正准确的数字,如
和
.
风见雨下
赞同来自:
如果目标是一个公平的舍入,你看到的行为是对的,但它并不总是你需要的。
获得所需的舍入类型的一个技巧 - 这是添加的 0.5, 然后拿这个词。 例如,添加 0.5 到 2.5 给 3, 与地板 3.
郭文康
赞同来自:
出口:
26.45
26.46
帅驴
赞同来自:
https://docs.python.org/3/library/decimal.html
. 它可以准确代表类型的类型 2.675, 不像 Python 浮子,在那里 2.675
真的
2.67499999999999982236431605997495353221893310546875 /确切地/. 您可以指定所需的舍入: ROUND_CEILING, ROUND_DOWN, ROUND_FLOOR, ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_UP 和round_05up-所有这些选项。
快网
赞同来自:
所以,从科学建立的角度来看,
它有适当的行为。
八刀丁二
赞同来自:
对于个人数字。
但是,我们无法将其应用于排名,因此我们可以做些什么,例如, A pandas dataframe, 而不进入周期,是:
君笑尘
赞同来自:
它将作为普通的圆形工作 excel.
郭文康
赞同来自:
奔跑吧少年
赞同来自:
奔跑吧少年
赞同来自:
/这结果很慢/.
例如。
江南孤鹜
赞同来自:
roundov t.
和
roundov t.
成功带来:
目的:提供更小且更大的圆形号码取决于
一些试验:
https://i.stack.imgur.com/CTTxY.png
m
三叔
赞同来自:
知食
赞同来自:
它会起作用,因为
总是会
在更近的过程中
, 因此,功能 round 将正常工作,她将会回合
到