簡體   English   中英

python中的兩位有效數字如何取整?

[英]How to round down two significant figures in python?

我已經看到了周圍的解決方案,但它們大多四舍五入到兩位有效數字而不是向下

我試過這幾種方法

import math
v = 0.000129
math.floor(v*100)/100

-output-
0.0    

或者

v = 0.000129
from decimal import Decimal
float(f"{Decimal(f'{v:.2g}'):f}")

-output-
0.00013

如您所見,我想要兩個有效數字,但不希望它們四舍五入。 Decimal 可以給出兩個 sig figs,但它四舍五入,而 math 只是簡單地給了我 0。

即一些測試

1999 -> 1900
29901 - > 29000
0.0199 -> 0.019

謝謝!

不使用任何字符串轉換的數學解決方案:

def round_down(n, sig_figs):
    import math
    return n - n % 10 ** math.ceil(math.log(abs(n), 10) - sig_figs)


>>> [round_down(n, 2) for n in [1990, 29901, 0.0199]]
[1900, 29000, 0.019]

注意事項:

  • 不適用於輸入0
  • 負數實際上是朝負方向舍入,而不是朝零舍入(例如-0.0199-0.02

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM