タイトルが示唆するように、私は浮動小数点数を取ってそれを最も近い整数に丸めたい。しかし、それが全体ではない場合は、次の整数にどれだけ近いかにかかわらず、変数を切り捨てたいと思っています。これを行う方法はありますか?浮動小数点数を最も近い整数に丸めますか?
答えて
私はあなたがfloor関数を必要だと思う:
これらの一つは動作するはずです:
import math
math.trunc(1.5)
> 1
math.trunc(-1.5)
> -1
math.floor(1.5)
> 1
math.floor(-1.5)
> -2
'math.trunc'の出力は整数ですが、 'math.floor'の出力はfloatです。 – evedovelli
@evedovelli:これ以上はない。 'python 3.6.0'の時点で' type(math.floor(1.51)) - > int'と 'type(math.trunc(1.51)) - > int' –
シンプル
print int(x)
も同様に動作します。
int(0.6)= 1ではなく1 –
@HelinWangそれはまさにOPが求めていたものです。 –
これは最もPythonicのアプローチのようです。 –
非常に簡単かもしれませんが、1を切り上げてマイナス1にすることはできませんでしたか?
number=1.5
round(number)-1
> 1
これは整数全体に対して間違った答えを与えます。たとえば、2.0の切り上げは2で、1を引くと1の不正確な結果になります。 –
@ PascalCuoq私はあなたの問題を理解していません。結果として1.0を望みますか? OPは丸めたいと思っていたので、最も近い「整数」に番号を付けます。 –
@bad_keypoints OPが2.0から1へと丸めたいとは思わない。 –
あなたが数学をインポートしたくない場合は、あなたが使用できます:たとえば
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.
あなたの答えをありがとう。次回は、適切なコード(閉じ括弧)を書いて、より良いレセプションを得ることができます。 – Geoff
'round'はすでに議論されており、この質問が1年前に尋ねられたときの答えとして拒否されました。 OPは 'math.floor'を望んでいます。 –
はしないでくださいあなたがこれを解決したかどうかを知っていますが、私はこの質問に直面します。小数点を取り除きたい場合は、int(x)を使用すれば10進数をすべて削除します。 Theresはround(x)を使用する必要はありません。浮動小数点の結果を得るために
は、単純に使用します。
round(x-0.5)
それは同様に負の数のために動作します。
どのような洗練されたソリューション。ありがとう! –
は非常に洗練された –
多くの人が使用することを言う:
int(x)
、これはほとんどの場合のために[OK]を動作しますが、少し問題があります。 OPの結果がある場合:
x = 1.9999999999999999
それは
それは丸めます16日9後 x = 2
に丸めます。あなたがこのような事をしっかり見つけられないと確信しているなら、これは大きな問題ではありません。しかし、それは心に留めておくべきことです。
です。これは、内部float64表現で '1.9999999999999999'が実際には' 2.0'に等しいからです。 I. 64ビット浮動小数点数はその有効数字を表すことができないため、浮動小数点数に変換されるとすぐに丸められます。 '1.9999999999999999 == 2.0'と評価して確認できます。そして、equals演算が浮動小数点数を丸めていると思われる場合は、バイナリ表現を 'struct.pack(" d "、1.9999999999999999)== struct.pack(" d "、2.0)'と比較することができます。 。 – blubberdiblub
それがあなたのポイントなのであれば、 'int()'の何が間違っているのか分かりません。値はすでに2.0であり、それを2に喜んで変換します。 – blubberdiblub
OP(または将来誰かがこれを読み込む人)が何らかの理由で最も近い整数(切り上げ値ではありません)を使用するのであれば、心に留めておくべきこと。 – lokilindo
あなたが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.])
私はそれはまたあなたの場合は動作すると思いますnumpy
モジュールの代わりにmath
モジュールを使用してください。
x//1
//演算子は除算の床を返します。 1で割っても番号は変わらないので、これはfloorと同じですが、インポートは必要ありません。あなたはintを返すことはありません。
- 1. 浮動小数点数をルビの最も近い整数に丸める
- 2. Angularjs:浮動小数点数を最も近い数値に丸める方法
- 3. 浮動小数点数をC#で最も近い整数に丸める方法はありますか?
- 4. 丸めMatlabの最も近い整数への小数点
- 5. 浮動小数点丸め
- 6. ハスケル - 浮動小数点を次の整数に丸める
- 7. 大きな浮動小数点を整数に丸める
- 8. IEEE754浮動小数点の最も一般的な丸めアルゴリズム
- 9. 浮動小数点数から数値を最も近い整数に変換するには?
- 10. 浮動小数点数をJavaScriptの次の整数に丸める
- 11. Pythonで最も近い下位浮動小数点数に丸める方法は?
- 12. 浮動小数点/小数点から小数点以下3桁までを正確に丸めますか?
- 13. 浮動小数点数をN小数点以下に丸める方法[JAVA]
- 14. 浮動小数点数を2小数点以下に丸める
- 15. なぜ浮動小数点数を丸めるのですか?
- 16. Pandas Shiftは浮動小数点数を浮動小数点に変換して丸めます
- 17. コンパイル時に浮動小数点の最も近い2乗を求める
- 18. Python:浮動小数点入力から整数への丸め出力
- 19. 浮動小数点型の最近傍の浮動小数点数に無効な文字があります
- 20. JavaScriptは最も近い整数に丸めます
- 21. 浮動小数点数は浮動小数点数ですか?
- 22. 最も近い指定された数値(小数点)への丸め
- 23. 最も近い整数への変数の丸め
- 24. opencvでC++で浮動小数点数を丸める方法
- 25. Cの浮動小数点数を丸める#
- 26. MIPSの丸め浮動小数点数をプリントアウト
- 27. MIPS(アセンブリ) - 浮動小数点数を丸める方法?
- 28. 浮動小数点の減算でも丸めを行います
- 29. IEEE-754浮動小数点数の丸め機構
- 30. 丸ごと浮動小数点で$ .01
IEEE浮動小数点形式では数値が非常に大きく、その結果、1より大きい値を表すことができるため、xを丸めることはできますが、x + 1を下げることで期待した結果が得られません。 – dmckee
いくつか例を挙げてください。 –