programing

Python, 출력에서 ​​소수점 이하 두 자리까지 모든 부동 소수점 인쇄

nasanasas 2020. 11. 30. 17:53
반응형

Python, 출력에서 ​​소수점 이하 두 자리까지 모든 부동 소수점 인쇄


소수점 둘째 자리까지 4 개의 부동 소수점을 출력해야합니다.

이것이 내가 가진 것입니다.

print '%.2f' % var1,'kg =','%.2f' % var2,'lb =','%.2f' % var3,'gal =','%.2f' % var4,'l'

그것은 매우 부정하고 나빠 보입니다. '% .2f'를 출력하는 플로트를 만드는 방법이 있습니까?

참고 : Python 2.6을 사용합니다.


글쎄요 적어도 다음과 같이 정리하겠습니다.

print "%.2f kg = %.2f lb = %.2f gal = %.2f l" % (var1, var2, var3, var4)

값을 멋진 문자열로 변환하려면 다음을 수행하십시오.

twodecimals = ["%.2f" % v for v in vars]

또는 질문에서와 같이 단위를 인쇄 할 수도 있습니다.

vars = [0, 1, 2, 3] # just some example values
units = ['kg', 'lb', 'gal', 'l']
delimiter = ', ' # or however you want the values separated

print delimiter.join(["%.2f %s" % (v,u) for v,u in zip(vars, units)])
Out[189]: '0.00 kg, 1.00 lb, 2.00 gal, 3.00 l'

두 번째 방법을 사용하면 필요에 맞게 구분 기호 (탭, 공백, 줄 바꿈 등)를 쉽게 변경할 수 있습니다. 구분 기호는 하드 코딩되는 대신 함수 인수가 될 수도 있습니다.

편집 : 'name = value'구문을 사용하려면 목록 이해 내에서 요소 별 연산을 변경하면됩니다.

print delimiter.join(["%s = %.2f" % (u,v) for v,u in zip(vars, units)])
Out[190]: 'kg = 0.00, lb = 1.00, gal = 2.00, l = 3.00'

형식 문자열 구문.

https://docs.python.org/3/library/string.html#formatstrings

from math import pi
var1, var2, var3, var4 = pi, pi*2, pi*3, pi*4
'{:0.2f}, kg={:0.2f}, lb={:0.2f}, gal={:0.2f}'.format(var1, var2, var3, var4)

출력은 다음과 같습니다.

'3.14, kg=6.28, lb=9.42, gal=12.57'

가독성을 찾고 있다면 이것이 그 코드라고 믿습니다.

print '%(kg).2f kg = %(lb).2f lb = %(gal).2f gal = %(l).2f l' % {
    'kg': var1,
    'lb': var2,
    'gal': var3,
    'l': var4,
}

방금 round 함수를 발견했습니다. Python 2.7에 있지만 2.6에 대해서는 확실하지 않습니다. float와 dps의 수를 인수로 사용하므로 round (22.55555, 2)는 결과 22.56을 제공합니다.


원하는 것은 인쇄 작업이 자동으로 소수 2 자리 만 표시하도록 부동 소수점을 변경하도록하는 것입니다. '인쇄'를 대체하는 함수를 작성하는 것이 좋습니다. 예를 들면 :

def fp(*args):  # fp means 'floating print'
    tmps = []
    for arg in args:
        if type(arg) is float: arg = round(arg, 2)  # transform only floats
        tmps.append(str(arg))
    print(" ".join(tmps)

인쇄 대신 fp () 사용 ...

fp("PI is", 3.14159) ... 대신에 ... print "PI is", 3.14159


직접 작성하려는 방식이 아닙니다. Python의 설계 원칙 중 하나는 "명시 적이 암시 적보다 낫다"입니다 (참조 import this). 즉, 출력 형식이 일부 전역 형식 지정 설정 등에 따라 달라지는 것보다 원하는 것을 설명하는 것이 좋습니다. 물론 코드의 형식을 다르게 지정하여 더보기 좋게 만들 수 있습니다.

print         '%.2f' % var1, \
      'kg =' ,'%.2f' % var2, \
      'lb =' ,'%.2f' % var3, \
      'gal =','%.2f' % var4, \
      'l'

참고 URL : https://stackoverflow.com/questions/2075128/python-print-all-floats-to-2-decimal-places-in-output

반응형