나는 같은 번호 목록을 얻으려면 [-2.3,-2.2,...,0.2]
에서 Python
. 그러나 시도 :
[float(i)/10 for i in range(-23,2)]
돌아올 것이다 [-2.2999999999999998, -2.2000000000000002, -2.1000000000000001, -2.0, -1.8999999999999999, -1.8, -1.7, -1.6000000000000001, -1.5, -1.3999999999999999, -1.3, -1.2, -1.1000000000000001, -1.0, -0.90000000000000002, -0.80000000000000004, -0.69999999999999996, -0.59999999999999998, -0.5, -0.40000000000000002, -0.29999999999999999, -0.20000000000000001, -0.10000000000000001, 0.0]
이 문제를 어떻게 해결합니까?
라운드가 작동하지 않습니다.
>>> round(float(-23)/float(10),3)
-2.2999999999999998
CSV에 최종적으로 쓰거나 기본 방법을 통해 다른 언어로 전달하는 것입니다.
어떤 것이 인쇄 되었을 때 어떻게 보이는지 와 그 가치로 표현 되어야하는 것을 혼동하지 마십시오 .
인쇄는 문제가되지 않습니다.
>>> ['{0:.1f}'.format(float(i)/10) for i in range(-23,3)]
['-2.3', '-2.2', '-2.1', '-2.0', '-1.9', '-1.8', '-1.7', '-1.6', '-1.5', '-1.4', '-1.3', '-1.2', '-1.1', '-1.0', '-0.9', '-0.8', '-0.7', '-0.6', '-0.5', '-0.4', '-0.3', '-0.2', '-0.1', '0.0', '0.1', '0.2']
그러나 이들은 인쇄 된 표현이기 때문에 문자열입니다. 계산을 할 때 정확하지 않은 float 표현이 필요합니다. @mitnk가 지적했듯이; @ 6502가 설명했듯이.
부동 소수점 숫자를보다 인간 친화적으로 표현 하는 decimal
모듈 을 사용할 수도 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다