2014-12-09 2 views
2

float에서 double로 데이터 유형을 변경하려고하면 모든 십진 값도 변경됩니다. 예를 들어 0.3은 0.30000001192092896이됩니다. 이것을 피하는 방법? 난 그냥 당신이 시도 할 수있는 ALTER 후 ... "이진 분수 직접 소수에 일치하지 않습니다"와 "평등을위한 수레를 비교하지 마십시오"의 놀라운 세계에mysql 열 유형을 float에서 double로 변경하고 값을 그대로 저장하는 방법은 무엇입니까?

ALTER TABLE `table1` MODIFY `weight` double; 
+1

귀하의 값은 정말 시작하는 0.3 없습니다. 0.3 (또는 0.300000)을 원하면 10 진수 데이터 유형을 사용하십시오. –

답변

0

에 오신 것을 환영를 사용

UPDATE table1 set weight = ROUND(weight, 7); 

별도의 변환 잡음을 없애 (또는 어쩌면 대신 7 6을보십시오) ...

+1

'여기에 분! 부동 소수점의 문제점 ('FLOAT' 또는'DOUBLE')은 그것이 항상 10 진 표현으로 깔끔하게 번역되지 않는다는 것입니다. 여기에 제안한 내용은 표의 데이터를 변경하지만 표시하려면 십진수로 변환해야합니다. 응용 프로그램의 수치 무결성은 ** 사용자가 제안한대로하지 않고 ** 결과를 표시하기 전에 서식을 지정하고 부동 소수점을 이해하지 못하는 최종 사용자에게 표시하기 직전에 서식을 지정하여 ** 향상됩니다. –

관련 문제