2009-02-02 2 views
1

통화 ("120.00", "123.45", "1234.56")로 변환해야하는 "12000", "12345", "123456"과 같은 값 목록이 있습니다. 내가 아는 유일한 방법은 값을 문자열로 변환하고 첫 번째 strlen() - 2 문자를 한 문자열 (달러)에 복사하고 두 자리를 다른 문자열 (센트)으로 복사 한 후 다음과 같이 작성하는 것입니다.통화 형식으로 변경하는 가장 좋은 방법은 무엇입니까?

printf("%s.%s", dollars, cents); 
+0

로케일과 관련된 것일 경우 표시하지 않습니까? 그렇습니까? – SAMills

+0

아니요, 그렇지 않습니다. 나는 소수 자릿수가 필요하다. – scottm

답변

6
printf("$%.2f", value/100); 
+0

통화가 센트 인 경우, Fistandantilus의 명령을 사용하기 전에 100으로 나눕니다. – Brian

+0

실제로 100.0f로 나누어서 플로트인지 확인하려고합니다. 'value'가 int이면 값/100은 'int'가됩니다. – codelogic

+0

Money 및 부동 소수점 값으로 인해 문제가 발생합니다. 이는 1/100을 부동 소수점 값으로 균등하게 변환 할 수 없기 때문입니다. Fistandantilus가 맞습니다. – lillq

3

화폐 금액을 저장하거나 표현하는 데 플로트를 사용하지 마십시오. longs를 사용하십시오 (40 억이 넘는 llong을 필요로하는 경우). 일반적으로 최소 사용 가능 단위로 통화를 표현하는 것이 좋습니다. 예를 들어 100Euro를 나타 내기 위해 10000을 사용합니다.

말이
printf("%d.%02d", value/100, value%100); 

희망 ... 통화 가치와

계산이 복잡한 주제이다하지만 당신은 질수 : 다음 (유로 또는 달러로 100 %를 가정)이 값을 포맷하는 올바른 방법입니다 가장 큰 통화 단위 (예 : 센트)에 대한 반올림 된 대답을 항상 목표로 삼고, 반올림 오류가 계산되는 것을 확인하십시오 (예 : 33 + 33 + 34 또는 33 + 33 + 33 + 1). 접두사

0

는 작은 값 0을 사용하여 $ 1.00 이상 :

의 printf ("$ % 0.2f 달러"값/100.0);

이렇게하면 값이 25 인 경우 $ 0.25가됩니다.

관련 문제