1

私の計算機は本当にイライラするので、Pythonで基本的な変換プログラムを作成して、周波数が与えられたときに光子の波長を計算しようとしています(逆も同様です)。私の最初の計算ではうまくいきました:

Convert to frequency or wavelength? (hz/wl) hz
What is the wavelength? 7.24e-07
414364640883977.0

しかし、波長に変換しようとして周波数を 4.80e15 にすると、単純に "0.0" が返されました。

Convert to frequency or wavelength? (hz/wl) wl
What is the frequency? 4.80e015
0.0

どこかに問題がありますか?何かを修正する可能性がある場合に備えて、数学と数値をインポートしましたが、役に立たなかったようです。

def converter():
    import numbers
    import math
    conversion = input("Convert to frequency or wavelength? (hz/wl) ")

    if conversion == "hz":
        wl = eval(input("What is the wavelength? "))
        c = 3.00e08
        hz = c // wl
        print(hz)
    if conversion == "wl":
        hz = eval(input("What is the frequency? "))
        c = 3.00e08
        wl = c // hz
        print(wl)

converter()

私は他のいくつかの値を試してみましたが、スケール全体を減らしました (すべてを 10^8 小さくしました) が、何も変わりませんでした。

4

1 に答える 1

1

//は Python のフロア分割です。確かにあなたは浮動小数点をしたいですか?

>>> 3e8 // 4.8e15  # returns the floor
0.0
>>> 3e8 / 4.8e15
6.25e-08

つまり、コード内で置き換え//ます/。きっともっと幸せになれると思います;-)

于 2013-09-19T04:18:45.197 に答える