일부 작은 숫자를 간단하고 읽기 쉬운 결과로 변환하려고합니다. 여기에 내 방법이 있지만 더 간단한 것이 있는지 궁금합니다.파이썬에서 음수 지수를 "반올림"
x = 8.54768039530728989343156856E-58
y = str(x)
print "{0}.e{1}".format(y.split(".")[0], y.split("e")[1])
8.e-58
일부 작은 숫자를 간단하고 읽기 쉬운 결과로 변환하려고합니다. 여기에 내 방법이 있지만 더 간단한 것이 있는지 궁금합니다.파이썬에서 음수 지수를 "반올림"
x = 8.54768039530728989343156856E-58
y = str(x)
print "{0}.e{1}".format(y.split(".")[0], y.split("e")[1])
8.e-58
이것은 매우 가깝습니다. 정확히 8.e-58
이 필요하거나 읽기 쉽도록 줄이려고합니까?
>>> x = 8.54768039530728989343156856E-58
>>> print "{0:.1e}".format(x)
8.5e-58
대안 : 파이썬 2.7 또는 3.1에, 당신은 위치를 나타내는 최초의 제로를 생략 할 수 있으므로 이런 "{:.1e}".format(x)
같은 것이라고
가>>> print "{0:.0e}".format(x)
9e-58
주 ?
>>> x = 8.54768039530728989343156856E-58
>>> "{:.1e}".format(x)
'8.5e-58'
예. 이거 훌륭해. – zach
문자열 조작을 수행하지 않고 지수를 추출하려는 경우 다른 방법이 있습니다. 당신이 원하는대로
def frexp_10(decimal):
logdecimal = math.log10(decimal)
return 10 ** (logdecimal - int(logdecimal)), int(logdecimal)
>>> frexp_10(x)
(0.85476803953073244, -57)
형식 ...
감사합니다 spinning_plate하지만 작고 단순한 찾고 있었어. – zach
두 가지 답이있다 : 수를 사용하여 하나의 간단한 표시 용입니다. 실제 번호는
: 내장 라운드() 함수는 임의의 소수 자릿수로 번호를 반올림한다
>>> round(3.1415,2)
3.14
>>> round(1.2345678e-10, 12)
1.23e-10
. 이 값을 사용하여 중요하지 않은 자릿수를 판독 값에서 잘라낼 수 있습니다.
표시를 위해 사용하는 디스플레이의 버전이 중요합니다. Python 2.x에서는 3.x에서 사용되지 않으므로 'e'포맷터를 사용할 수 있습니다.
>>> print "%6.2e" % 1.2345678e-10
1.23e-10
또는 3.X에서
, 사용 :>>> print("{:12.2e}".format(3.1415))
3.14e+00
>>> print("{:12.2e}".format(1.23456789e-10))
1.23e-10
또는, 당신은 제로 좋아하는 경우에 : 잘
>>> print("{:18.14f}".format(1.23456789e-10))
0.00000000
합니다. 이것은 훨씬 간단합니다 - 감사합니다 – zach