如何将 python 中相同值的不同形式的整数转换为指数

how to convert integer to exponential in different forms for the same value in python

我正在尝试为相同的值获取不同形式的指数值。 例如:

print('{:e}'.format(100))

ans=1.000000e+02。这工作正常

我想要这样的答案,

ans1: 0.10000e+03

ans2: 0.01000e+04

ans3: 10000.00000e-2

如何实现这些?

我硬编码了一个可以满足您需要的格式化程序。可以改进代码以提高效率和可读性,但我会把它留给你。
我假设 build-in format 函数是 decimals_power_of_ten=0,您可以在示例中看到并根据需要进行更改。这是代码:

def custom_format(num, decimals_power_of_ten, digits_after_dot):
    formated = '{:e}'.format(num)
    parts = formated.split('e')
    new_decimal = ''
    new_power = ''

    if decimals_power_of_ten != 0:
        part1 = float(parts[0])*(10**decimals_power_of_ten)
        d = "{:." +str(digits_after_dot)+ "f}"
        new_decimal = d.format(part1)
       
        new_power_int = int(parts[1][1:]) - decimals_power_of_ten

        if new_power_int > 0 and new_power_int < 9:
            new_power =  'e+0' + str(new_power_int)
        else:
            if new_power_int > 0:
                new_power = 'e+'+str(new_power_int)
            else:
                new_power = 'e'+str(new_power_int)
        formated = new_decimal + new_power
    
    return formated

您的示例和相应的输出:

print(custom_format(100, 0, 5))
print(custom_format(100, -1, 5))
print(custom_format(100, -2, 5))
print(custom_format(100, 4, 5))

1.000000e+02
0.10000e+03
0.01000e+04
10000.00000e-2