
MongoDBBSONDecimal128::__toString() 메서드는 Decimal128 타입의 값을 문자열로 변환할 때 반올림이 발생하는 이유는 이 메서드가 내부적으로 소수점 이하 부분을 반올림하는 방식으로 구현된 때문입니다.
이 문제를 해결하기 위해, Decimal128 타입의 값을 문자열로 변환하기 전에 소수점 이하 부분을 반올림하지 않고 정확하게 유지하는 방법을 사용할 수 있습니다.
예를 들어, PHP의 bcadd() 함수를 사용하여 소수점 이하 부분을 반올림하지 않고 정확하게 유지한 후, __toString() 메서드를 호출하여 문자열로 변환할 수 있습니다.
#hostingforum.kr
php
$decimal = new MongoDBBSONDecimal128('123.456789012345678901234567890');
$string = bcadd($decimal->toString(), '0', 100);
이 방법을 사용하면 Decimal128 타입의 소수점 이하 부분이 반올림되지 않고 정확하게 문자열로 변환할 수 있습니다.
2025-04-26 03:40