2013-03-20 3 views
-4

Я пытаюсь сохранить cent (int) в базе данных из-за круглой проблемы.Конвертировать деньги/валюту в центр и наоборот

Каков алгоритм преобразования Двойной денежной ценности в цент и наоборот?

+0

Немного подробная информация/контекст поможет. – Whymarrh

+0

Можете ли вы привести пример двойного хранения денежного значения? –

+1

деньги в цент? Из долларов? Вы имеете в виду, умножить на 100 и раунд? –

ответ

1

Если у вас есть следующий double значение,

double allTheMoney = 123.54; // as in $123 + 54 cents 

Вы можете получить его в центах, используя,

int allCents = (int)(allTheMoney * 100); 
// or using long 
long allCents = Math.round(allTheMoney * 100); 
+0

Я был быстрее ... – ITroubs

+0

Увы, неизбежная гонка будет первой с ответом. – Whymarrh

+0

@ITroubs ни один из них не должен отвечать IMO. Как и в случае, помогите вампиру. –

0

Это быстро и легко:

double val = 1.45; 
int cents = (int)(val * 100); 

или

int cents = (int)Math.round(val*100); 
+1

Это не круглый. Из-за того, что хранятся значения с плавающей запятой, фактическое двойное значение может быть 1,4499999, и это преобразует его в 144 цента. –

+0

Я знаю. это также является причиной того, почему никто не должен работать с двойным, когда дело доходит до денег ... – ITroubs

+0

Так что используйте '(val + 0.005D) * 100D', если я правильно помню. –

Смежные вопросы