浮動小数点数を最も近い整数に丸めたい。ただし、整数でない場合は、次の整数にどれだけ近いかに関係なく、常に変数を切り捨てたいと考えています。これを行う方法はありますか?
382007 次
12 に答える
199
単純
print int(x)
同様に動作します。
于 2013-06-17T07:51:30.967 に答える
82
これらのいずれかが機能するはずです。
import math
math.trunc(1.5)
> 1
math.trunc(-1.5)
> -1
math.floor(1.5)
> 1
math.floor(-1.5)
> -2
于 2013-06-17T07:05:17.460 に答える
34
浮動小数点の結果を取得するには、次を使用します。
round(x-0.5)
負の数に対しても機能します。
于 2015-04-15T13:22:37.743 に答える
9
多くの人が を使用すると言いint(x)
、これはほとんどの場合問題なく動作しますが、少し問題があります。OPの結果が次の場合:
x = 1.9999999999999999
に丸められます
x = 2
16 番目の 9 の後は丸められます。そのようなことに出くわすことがないと確信している場合、これは大したことではありません。しかし、それは心に留めておくべきことです。
于 2015-07-02T22:15:41.067 に答える
6
数学をインポートしたくない場合は、次を使用できます。
int(round(x))
ここにドキュメントがあります:
>>> help(round)
Help on built-in function round in module __builtin__:
round(...)
round(number[, ndigits]) -> floating point number
Round a number to a given precision in decimal digits (default 0 digits).
This always returns a floating point number. Precision may be negative.
于 2014-05-29T22:12:10.153 に答える
3
numpy を使用している場合は、負の数でも機能する次のソリューションを使用できます (配列でも機能します)。
import numpy as np
def round_down(num):
if num < 0:
return -np.ceil(abs(num))
else:
return np.int32(num)
round_down = np.vectorize(round_down)
round_down([-1.1, -1.5, -1.6, 0, 1.1, 1.5, 1.6])
> array([-2., -2., -2., 0., 1., 1., 1.])
math
モジュールの代わりにモジュールを使用するだけでも機能すると思いnumpy
ます。
于 2016-06-22T21:34:37.763 に答える
1
これを解決したかどうかはわかりませんが、この質問に出くわしました。小数点を取り除きたい場合は、 int(x) を使用すると、すべての小数点以下の桁が削除されます。round(x) を使用する必要はありません。
于 2014-11-28T07:20:53.580 に答える
-2
とても簡単かもしれませんが、四捨五入してマイナス 1 にすることはできませんか? 例えば:
number=1.5
round(number)-1
> 1
于 2014-05-16T17:41:26.250 に答える