Я пытаюсь сохранить cent (int) в базе данных из-за круглой проблемы.Конвертировать деньги/валюту в центр и наоборот
Каков алгоритм преобразования Двойной денежной ценности в цент и наоборот?
Я пытаюсь сохранить cent (int) в базе данных из-за круглой проблемы.Конвертировать деньги/валюту в центр и наоборот
Каков алгоритм преобразования Двойной денежной ценности в цент и наоборот?
Если у вас есть следующий double
значение,
double allTheMoney = 123.54; // as in $123 + 54 cents
Вы можете получить его в центах, используя,
int allCents = (int)(allTheMoney * 100);
// or using long
long allCents = Math.round(allTheMoney * 100);
Это быстро и легко:
double val = 1.45;
int cents = (int)(val * 100);
или
int cents = (int)Math.round(val*100);
Это не круглый. Из-за того, что хранятся значения с плавающей запятой, фактическое двойное значение может быть 1,4499999, и это преобразует его в 144 цента. –
Я знаю. это также является причиной того, почему никто не должен работать с двойным, когда дело доходит до денег ... – ITroubs
Так что используйте '(val + 0.005D) * 100D', если я правильно помню. –
Немного подробная информация/контекст поможет. – Whymarrh
Можете ли вы привести пример двойного хранения денежного значения? –
деньги в цент? Из долларов? Вы имеете в виду, умножить на 100 и раунд? –