[解決済み] フロート値が整数であるかどうかを確認する方法
2022-02-18 18:47:30
質問
12,000以下の整数である最大の立方根を求めたい。
processing = True
n = 12000
while processing:
n -= 1
if n ** (1/3) == #checks to see if this has decimals or not
しかし、整数であるかどうかを確認する方法がよくわかりません。文字列に変換して、インデックスを使って末尾の値が0かどうかをチェックすることもできますが、これはかなり面倒なようです。もっと簡単な方法はないでしょうか?
どのように解決するのですか?
フロート値が整数であるかどうかを調べるには
float.is_integer()
メソッド
:
>>> (1.0).is_integer()
True
>>> (1.555).is_integer()
False
メソッドに追加されました。
float
型は、Python 2.6 で導入されました。
Python2でのことを考慮に入れてください。
1/3
は
0
(整数オペランドの床除算!)、浮動小数点演算は不正確な場合があること(a
float
は2進数の分数を使った近似値です。
ない
は正確な実数です)。しかし、ループを少し調整すると、このようになります。
>>> for n in range(12000, -1, -1):
... if (n ** (1.0/3)).is_integer():
... print n
...
27
8
1
0
ということは、3乗以上のもの(10648を含む)は、前述の不正確さのために見落とされたことになります。
>>> (4**3) ** (1.0/3)
3.9999999999999996
>>> 10648 ** (1.0/3)
21.999999999999996
数字を確認する必要がある
閉じる
を使わずに整数で表示するか、あるいは
float()
を使用して数値を求めます。の立方根を切り捨てるように
12000
:
>>> int(12000 ** (1.0/3))
22
>>> 22 ** 3
10648
Python 3.5 以降を使用している場合は
math.isclose()
機能
は、浮動小数点値が設定可能なマージン内にあるかどうかを確認するために使用します。
>>> from math import isclose
>>> isclose((4**3) ** (1.0/3), 4)
True
>>> isclose(10648 ** (1.0/3), 22)
True
古いバージョンでは、この関数の素朴な実装(エラーチェックを省略し、無限大やNaNを無視する)は、次のようになります。 PEP485に記載されている :
def isclose(a, b, rel_tol=1e-9, abs_tol=0.0):
return abs(a - b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
関連
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python関数の高度な応用を解説
-
Python jiabaライブラリの使用方法について説明
-
Pythonによるjieba分割ライブラリ
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
Pythonの@decoratorsについてまとめてみました。
-
Python 入出力と高次代入の基礎知識
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件