1. ホーム
  2. python

小数点以下の簡単な求め方

2023-09-28 17:11:52

質問

浮動小数点数の小数点以下の桁数を簡単に調べる方法、または統合された関数はありますか?

数値は文字列から解析されるので、1つの方法は'.'記号の後の桁を数えることですが、それは私にはかなり不器用に見えます。必要な情報を float または Decimal オブジェクトを作成できますか?

解決方法 (もちろん、そのうちの一つです :) )

私は私の問題を助けるためにpythonのdecimal.Decimalクラスを使用することを選択しました。

e = abs(Decimal(string_value).as_tuple().exponent)

注意:これはDecimalを構成するパラメータがfloatではなくstringである場合のみ動作します(これは浮動小数点数の不正確さにつながります)。

他のすべての貢献にも大いに感謝します。

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

他の人が言ったことの繰り返しになりますが (私がすでにタイプアウトしてしまったので!)、浮動小数点数の場合、10進数と2進数の表現の違いから、このような値が意味を持つかどうかさえわかりません。

の場合は decimal.Decimal オブジェクトを使用すると、指数を取得することができます。 as_tuple メソッドを使うことができます。 sign , digits そして exponent 属性があります。

>>> d = decimal.Decimal('56.4325')
>>> d.as_tuple().exponent
-4
>>> d = decimal.Decimal('56.43256436')
>>> d.as_tuple().exponent
-8

よりも大きい場合を除き、指数の否定は小数点以下の桁数です。 0 .