offeltoffel:
どのようにして実行するように管理するのmath.ceil
数は10の次に高いパワーに割り当てられているような?
# 0.04 -> 0.1
# 0.7 -> 1
# 1.1 -> 10
# 90 -> 100
# ...
私の現在のソリューションは、辞書であることをチェックし、入力番号の範囲が、それはハードコードだと私はワンライナーのソリューションを好むだろう。たぶん私はここに数学的なトリックまたは対応するnumpyの機能が不足していますか?
jonrsharpe:
あなたは使うことができmath.ceil
てmath.log10
、これを行うには:
>>> 10 ** math.ceil(math.log10(0.04))
0.1
>>> 10 ** math.ceil(math.log10(0.7))
1
>>> 10 ** math.ceil(math.log10(1.1))
10
>>> 10 ** math.ceil(math.log10(90))
100
log10(n)
あなたに解決できますx
満たすことを10 ** x == n
あなたは切り上げる場合は、そうx
、それはあなたに10の次に高いパワーのための指数を与えるを。
音符値のそれ既に整数である「10の次に高いパワー」であろう。n
x
n
>>> 10 ** math.ceil(math.log10(0.1))
0.1
>>> 10 ** math.ceil(math.log10(1))
1
>>> 10 ** math.ceil(math.log10(10))
10