![](/img/trans.png)
[英]Is there a way to modify string format according to the max number of digits?
[英]Format number to string according to template number
我想根据另一个模板/示例编号的精度显示一个数字。
就像,拥有example_number = 0.0001
并且能够执行format_fp_digits_like(example_number, another_number)
; 使用another_number=10.12345
我会得到10.1234
。
这是我到目前为止所尝试的:
import math
def format_fp_digits_like(template_number, number):
n_digits = len(str(int(number)))
if '.' in str(template_number):
n_fp_digits = len(str(math.modf(template_number)[0]).split(".")[-1])
else:
n_fp_digits = 0
fs = "{:"+f"{n_digits}.{n_fp_digits}f"+"}"
return fs.format(number)
assert format_fp_digits_like(0.0001, 16.12345) == "16.1234"
assert format_fp_digits_like(1, 16.123) == "16"
assert format_fp_digits_like(0.1, 8.5) == "8.5"
它有效,但我觉得它很笨拙。 可能有更好的方法?
您还可以使用字符串格式:
def rounder(template_number, number):
return ('{0:.%sf}' % len(str(template_number).split('.')[-1])).format(number)
rounder(0.0001, 10.12345)
'10.1235'
使用圆形 function 怎么样。
def format_fp_digits_like(number_of_float, number):
return str(round(number, number_of_float))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.