'0.9999965341102361'및 '3.465889763814134E-6'과 같은 숫자가있는 문자열이 있습니다. 나는 그것들을 float 값으로 변환하는 방법을 알고 있습니다. 그러나 그렇게하면 9.99996534e-01 및 3.46588976e-06이됩니다. 부동으로 변환하는 동안 숫자의 전체 길이를 보존하려면 어떻게해야합니까? 즉, 원래 숫자를 반올림 할 필요가 없습니다. 이를 수행하는 방법이 있습니까-float 길이를 20 또는 그 이상으로 설정할 수 있습니까?
실제로 학교에서 비단뱀을들은 지 오래 되었기 때문에 뻔한 것을 잊고 있을지도 모릅니다.
감사합니다.
decimal 모듈을 사용합니다.
>>> import decimal
>>>
>>> a = decimal.Decimal('0.9999965341102361')
>>> b = decimal.Decimal('3.465889763814134E-6')
>>> a
Decimal('0.9999965341102361')
>>> b
Decimal('0.000003465889763814134')
>>> a*10
Decimal('9.9999653411023610')
>>> b*10
Decimal('0.000034658897638141340')
>>> print(a)
0.9999965341102361
>>> print(b)
0.000003465889763814134
>>> print('{:1.20e}'.format(b))
3.46588976381413400000e-6
>>>
numpy 배열의 decimal.Decimal 객체
>>> import decimal
>>> import numpy as np
>>> x = decimal.Decimal('0.9999965341102361')
>>> y = decimal.Decimal('3.465889763814134E-6')
>>> z = decimal.Decimal('1.23456789012345678901e-2')
>>>
>>> a = np.array((x, y, z))
>>> a
array([Decimal('0.9999965341102361'), Decimal('0.000003465889763814134'),
Decimal('0.0123456789012345678901')], dtype=object)
>>>
>>> b = np.float64((x,y,z))
>>> b
array([ 9.99996534e-01, 3.46588976e-06, 1.23456789e-02])
>>> b[2], a[2]
>>>
(0.012345678901234568, Decimal('0.0123456789012345678901'))
>>>
>>> a*2
array([Decimal('1.9999930682204722'), Decimal('0.000006931779527628268'),
Decimal('0.0246913578024691357802')], dtype=object)
>>> b*2
array([ 1.99999307e+00, 6.93177953e-06, 2.46913578e-02])
>>>
>>> a*b
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
a*b
TypeError: unsupported operand type(s) for *: 'Decimal' and 'float'
>>>
객체 유형의 numpy 배열이 decimal.Decimal 객체를 보유하는 것처럼 보입니다. 원하는 작업에 따라 작동 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다