Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据模板编号将编号格式化为字符串_Python_Numbers_Format - Fatal编程技术网

Python 根据模板编号将编号格式化为字符串

Python 根据模板编号将编号格式化为字符串,python,numbers,format,Python,Numbers,Format,我想根据另一个模板/示例编号的精度显示一个编号 比如,拥有示例号=0.0001并且能够格式化\u fp\u数字\u(示例号,另一个\u号);用另一个\u数字=10.12345我会得到10.1234 这就是我迄今为止所尝试的: 导入数学 def格式(模板编号、数字): n_digits=len(str(int(number))) 如果str中的“.”(模板编号): n_fp_digits=len(str(math.modf(模板编号)[0])。拆分(“.”[-1]) 其他: n_fp_位=0 fs

我想根据另一个模板/示例编号的精度显示一个编号

比如,拥有
示例号=0.0001
并且能够
格式化\u fp\u数字\u(示例号,另一个\u号)
;用
另一个\u数字=10.12345
我会得到
10.1234

这就是我迄今为止所尝试的:

导入数学
def格式(模板编号、数字):
n_digits=len(str(int(number)))
如果str中的“.”(模板编号):
n_fp_digits=len(str(math.modf(模板编号)[0])。拆分(“.”[-1])
其他:
n_fp_位=0
fs=“{:“+f”{n_位}.{n_位}f”+“}”
返回fs.format(数字)
断言格式\u fp\u数字\u like(0.0001,16.12345)==“16.1234”
断言格式\u fp\u数字\u类似(1,16.123)=“16”
断言格式\u fp\u数字\u 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'

这似乎有点脆弱!如果模板看起来像
“0.12e3”
,或者给定了
“fail”
,该怎么办?为什么不使用常规的
宽度
精度
类型
参数呢?@SamMason我有另一个数字作为“模板”,没有宽度、精度或类型。这就是我试图做的,或多或少,但我很累-谢谢你的回答。如果“template_number”是一个整数,我必须返回“int(number)”才能通过我的小测试套件;)我使用了
if float(模板编号)。is_integer():返回int(编号)
,否则您的代码