10の次に高いパワーへのPythonラウンド

offeltoffel:

どのようにして実行するように管理するのmath.ceil数は10の次に高いパワーに割り当てられているような?

# 0.04  ->  0.1
# 0.7   ->  1
# 1.1   ->  10  
# 90    ->  100  
# ...

私の現在のソリューションは、辞書であることをチェックし、入力番号の範囲が、それはハードコードだと私はワンライナーのソリューションを好むだろう。たぶん私はここに数学的なトリックまたは対応するnumpyの機能が不足していますか?

jonrsharpe:

あなたは使うことができmath.ceilmath.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の次に高いパワー」であろうnxn

>>> 10 ** math.ceil(math.log10(0.1))
0.1
>>> 10 ** math.ceil(math.log10(1))
1
>>> 10 ** math.ceil(math.log10(10))
10

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=398908&siteId=1