簡體   English   中英

Python字符串格式修剪浮點精度不超過所需

[英]Python string formatting trim float precision to no more than needed

將浮點數轉換為字符串的最佳方法是什么,其精度不超過表示數字所需的精度,並且不超過指定的上限精度,以免發生以下情況?

>>> values = [1, 1., 1.01, 1.00000000001, 1.123456789, 100.123456789]
>>> print([ my_func(value,precision=6) for value in values]) 
['1', '1', '1.01', '1', '1.123457', '100.123457'] 

我已經看過str.format ,但只能找到具有特定精度的方法,該方法可能包含太多零:

>>> '{:0.6f}'.format(1.0)
'1.000000'

g選項接近,但是您必須根據整數部分的長度來做一些有趣的事情:

def my_func(value,precision=6):
    return '{v:0.{p}g}'.format(v=value,p=precision+len('{:d}'.format(int(value))))

有沒有更好的辦法?

rstrip -ing str.format版本是否符合您的要求? 例如,

'{:0.6f}'.format(num).rstrip('0').rstrip('.')

我不相信有內置選項,但是您可以使用string.rstrip從float的常規字符串表示形式中刪除尾隨零。

編輯:在使用string.rstrip之前,您還需要使用%f格式化令牌將其格式化為固定的最大精度。

暫無
暫無

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

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