像Java一样格式化Python浮点数

时间:2017-05-27 19:03:11

标签: java python printf

我的程序由Java和Python组件组成,我希望Python能够以与Java默认相同的方式格式化浮点数。

爪哇:

    float number1 = (float) Math.PI;
    float number2 = (float) Math.PI / 1000f;
    float number3 = (float) Math.PI / 10000f;
    float number4 = (float) Math.PI / 100000f;
    float number5 = (float) (int)(Math.PI * 1000000f) / 1000000f / 100000f;

    System.out.println(number1); // prints 3.1415927
    System.out.println(number2); // prints 0.0031415927
    System.out.println(number3); // prints 3.1415926E-4
    System.out.println(number4); // prints 3.1415926E-5
    System.out.println(number5); // prints 3.141592E-5

如何在Python中获得相同的输出?

Python的第一次尝试:

import math

number1 = float(math.pi)
number2 = float(math.pi / 1000)
number3 = float(math.pi / 10000)
number4 = float(math.pi / 100000)
number5 = float(int(math.pi * 1000000) / 1000000 / 100000)

print(number1) # prints 3.141592653589793
print(number2) # prints 0.0031415926535897933
print(number3) # prints 0.0003141592653589793
print(number4) # prints 3.141592653589793e-05
print(number5) # prints 3.141592e-05

print("{:8e}".format(number1)) # prints 3.141593e+00
print("{:8e}".format(number2)) # prints 3.141593e-03
print("{:8e}".format(number3)) # prints 3.141593e-04
print("{:8e}".format(number4)) # prints 3.141593e-05
print("{:8e}".format(number5)) # prints 3.141592e-05

1 个答案:

答案 0 :(得分:3)

您的格式设置语法不正确。这样做

print("{:.15f}".format(math.pi))

或老式的方式

print("%.15f" % (math.pi))
相关问题