簡體   English   中英

根據模板編號將數字格式化為字符串

[英]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.

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