2017-11-17 17 views
1

왜 다음 두 줄왜 NumberFormatter는이 형식으로 통화 분수 자리를 드롭 않습니다()

$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY); 
echo $fmt->format(12.34, NumberFormatter::CURRENCY); 

출력 $12.00?

+0

은 내가 알고'$ fmt-> formatCurrency()'숫자를 드롭하지 않습니다,하지만 난 그것을 $ fmt->'를 통해 통화 기호를 덮어 쓸 수 있기 때문에''형식()를 사용하고 싶습니다 setSymbol()'. –

+0

신의 사랑을 위해 돈을 부유물로 보관하지 말고, [moneyphp/money] (https://packagist.org/packages/moneyphp/money)와 같은 적당한 도서관을 이용하십시오. 부동 소수점 부정확으로 인해. – Sammitch

+0

@Sammitch 나는 그것을 알고 있지만 NumberFormatter를 사용하기 위해서는 float로 변환해야합니다. –

답변

0

의 두 번째 인수로 NumberFormatter::CURRENCY 상수를 사용하고 있기 때문입니다.

NumberFormatter 설명서의 predefined constants 섹션에서 상수는 함께 사용해야하는 방법으로 그룹화됩니다.

NumberFormatter::CURRENCY의 값은 2이며 포맷터를 만들 때 사용해야합니다. format() 함수의 2 값은 NumberFormatter::TYPE_INT64에 해당합니다.

두 번째 인수없이 format(12.34)으로 전화를 걸 수 있습니다.

$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY); 
echo $fmt->format(12.34); 
+0

감사합니다. 나는 상수를 오용하는 것을 알지 못했습니다. 두 번째 논쟁 없이는 실제로 예상대로 작동합니다. –