PHP언어 웹개발 서버관리 DB관련 모바일 Mac세상
WEB언어/PHP2019. 10. 23. 16:14

미국 화폐는 센트(0.01)가 최소 기본 단위로, 소수점 이하 2자리까지 표시가 되어야 하는 경우가 많습니다.

소수점 2자리 반올림 자르기

PHP에서 round($_val, 2); 소수점 2자리 반올림을 하면, 뒷자리가 0을로 채워지지가 않습니다.

해당 $ 1.00 같이 뒷자리를 채우기 위해서는 srpintf() 문을 이용하면 됩니다.

$padded = sprintf('%0.2f', $unpadded); // 520 -> 520.00

 

참고: [php] 소수점 이하 2자리까지 표시

 

 

 

(추천) number_format 를 이용한 방법

.75를 0.75로 변경하는 포멧 방식

number_format ('.75', 2); //결과는 0.75가 출력됩니다.

number_format ( float $number [, int $decimals = 0 ] ) : string
또는
number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," ) : string

다음과 같은 방식으로 하면, 간단히 미국 화폐 단위로 변환이 가능합니다.

 

 

 

숫자형 소수점 2자리 넣기

신용카드(Credit Card)의 통신에서 미국의 돈의 값의 경우, 예로 $4.20를 보낼때, 소수점 없이 420로 많이들 보냅니다.
(미국에 가장 유명한 Web Credit Card Payment 회사: stripe.com도 이 형식을 사용중)

[stripe.com코드] amount에는 소수점을 사용하지 않습니다.

이 경우 다시금 프로그램에서 표시가 될때는 420 -> 4.20으로 환산하는 방식을 사용해야 하는데요. 간단한 공식이지만 기억이 잘 떠오르지 않을 수 가 있습니다.

(가장 적은 단위의 통화를 양의 정수화 시키는 것 = A Positive integer in the smalless currency unit)

 

간단한 공식

$_money = '420';
$_money = $_money * 0.01;
echo $_money;// 결과: 4.2

 

숫자형으로 변경한 공식까지

$_money = '400020';
$_money = number_format($_money * 0.01, 2); 
echo $_money;// 결과: 4,000.20

 

너무도 간단한 내용이지만, 이 또한 생각이 나지 않을때가 있어 메모 남겨둡니다.

 

 

 

반대의 경우 4.20 -> 400

$_money = '4.20';
$_money = $_money * 100;
echo $_money;// 결과: 420

 

참고:
Stripe Currency - Are all amounts in cents / 100ths, or does it depend on currency?
Stripe must charge in "smallest currency unit" - currently biased toward dollars/cents 

 

방문시 위의 하트모양의 "♡ 공감"을 눌러주시면 감사하겠습니다.
(로그인하지 않으셔도 가능)
Posted by saltdoll

댓글을 달아 주세요