2014-12-02 3 views
1

플로트를 으로 정확히 지정합니다. 소수점 3 자리 또는 4 자리입니다. 예를 들어소수점 이하 3 자리 또는 4 자리로 플로팅

: '{:.5g}'.format(my_float)'{:.4f}'.format(my_float)과의 조합

1.0  => 1.000 # 3DP 
1.02 => 1.020 # 3DP 
1.023 => 1.023 # 3DP 
1.0234 => 1.0234 # 4DP 
1.02345 => 1.0234 # 4DP 

종류.

아이디어가 있으십니까?

+0

문제는 1.023이 정확하게 1.023이 아니라는 것입니다. 즉, 소수 자릿수가 3 자인지 4 자인지에 관계없이 번호 자체를 보지 못하게됩니다. –

+0

죄송합니다. 예제가 좀 간단했습니다. 이 동작은 1.0230000000001 또는 1.02299999999997과 같이 작동해야하며, 4DP에서 1.0230으로 내림합니다. 제 경우에는 3DP로 반올림합니다. –

답변

4

내가 묻는 것을 이해한다고 가정하면, 4로 포맷 한 다음 후미가있는 '0'을 삭제할 수 있습니다. 이렇게 :

def fmt_3or4(v): 
    """Format float to 4 decimal places, or 3 if ends with 0.""" 
    s = '{:.4f}'.format(v) 
    if s[-1] == '0': 
     s = s[:-1] 
    return s 

>>> fmt_3or4(1.02345) 
'1.0234' 
>>> fmt_3or4(1.023) 
'1.023' 
>>> fmt_3or4(1.02) 
'1.020' 
관련 문제