1. ホーム
  2. python

Python浮動小数点値を可能な限り小さくインクリメントします。

2023-11-24 06:59:35

質問

どのように私は可能な限り小さい量によってpythonの浮動小数点値のインクリメントを行うことができますか?


背景 浮動小数点値を辞書のキーとして使用しています。

たまには 非常に 時折 (そしておそらく絶対にないとは言い切れませんが)、衝突が発生することがあります。私は、浮動小数点値をできるだけ小さくインクリメントすることによって、これらを解決したいと思います。これを行うにはどうしたらよいでしょうか?

C言語では、私はこれを達成するために仮数ビットをいじりますが、私はそれがPythonで可能ではないと仮定します。

どのように解決するのですか?

Python 3.9以上

Python 3.9から開始します。 は 2020-10-05 にリリースされました。 を使用することができます。 math.nextafter 機能 :

math.nextafter(x, y)

xの次の浮動小数点値をyの方向へ返す。

xがyと等しい場合、yを返す。

例を挙げます。

  • math.nextafter(x, math.inf) は上がる:正の無限大に向かって。

  • math.nextafter(x, -math.inf) が下がる:マイナス無限大に向かって。

  • math.nextafter(x, 0.0) はゼロに向かう。

  • math.nextafter(x, math.copysign(math.inf, x)) はゼロから遠ざかっていく。

参照 math.ulp() .