|
|
|
Целая и дробная часть числа
|
|||
|---|---|---|---|
|
#18+
Здравствуйте всем! Знаю, что вопрос уже во многих форумах не раз поднимался. Но все поиски не дали мне полного ответа по решению проблемы. Задача простая: Есть число double или float. Нужно получить целую и дробную часть этого числа в виде целых значений. Вообще, изначально у меня была задача в JSP показать вещественное число в виде денег, например 123.19 -> "123 руб. 19 коп." или "123=19" и т.д. Но, думаю, если научусь извлекать дробную часть числа (это может пригодиться в других задачах), то дальше проблемы не будет. Конечно, есть способы перевода этого числа в строку, разбора этой строки. Но, может, есть способы более оптимальные и подходящие для работы в JSP. Знаю, что DecimalFormat и NumberFormat делают подобное. Но, можно ли в них задавать произвольные денежные маски? С уважением, Семен Попов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 14:51:58 |
|
||
|
Целая и дробная часть числа
|
|||
|---|---|---|---|
|
#18+
Не храни деньги в типах float и double. Хорошей практикой является хранить деньги в копейках (центах). Двочиное представление чисел в типах float и double довольно специфичное. Из-за него не все десятичне дроби можно предаставить в двоичном виде и потом вернуть обратно. Приходится округлять и откидывать погрешности. Дабы не искаль лишщний геморрой себе на одно место, просто храни копейки, и ставь точку после 2х занков при выводе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 15:01:24 |
|
||
|
Целая и дробная часть числа
|
|||
|---|---|---|---|
|
#18+
BigDecimal запретили приказом министра обороны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 15:06:35 |
|
||
|
Целая и дробная часть числа
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНе храни деньги в типах float и double. Хорошей практикой является хранить деньги в копейках (центах). Спасибо. Действительно дельный совет насчет хранения денег. Буду учитывать. Ну, а если все же придется когда-нибудь отделять целую и дробную части? jusioBigDecimal запретили приказом министра обороны? Посмотрел все методы BigDecimal, но не нашел подходящего, который бы извлекал дробную часть. Было бы хорохо, если одним методом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 15:29:21 |
|
||
|
Целая и дробная часть числа
|
|||
|---|---|---|---|
|
#18+
Semen PopovСпасибо. Действительно дельный совет насчет хранения денег. Буду учитывать. Ну, а если все же придется когда-нибудь отделять целую и дробную части? При данной постановке задачи, точного решения все равно нет. Что делать с дробями не имеющими конечного представления в десятичной записи? Таких довольно много. Ты вводишь число в конечной записи. При сохрании в двоичную дробь оно округляется до ближайшей конечной двоичной записи с заданной разрядностью. И потом при выводе его в десятичный формат ты легко получаешь десятичную дробь без конечно записи. Так что тут задача строго ввод-вывод + немного математики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 15:36:51 |
|
||
|
Целая и дробная часть числа
|
|||
|---|---|---|---|
|
#18+
Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 15:44:30 |
|
||
|
Целая и дробная часть числа
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНе храни деньги в типах float и double. Хорошей практикой является хранить деньги в копейках (центах). Двочиное представление чисел в типах float и double довольно специфичное. Из-за него не все десятичне дроби можно предаставить в двоичном виде и потом вернуть обратно. Приходится округлять и откидывать погрешности. Дабы не искаль лишщний геморрой себе на одно место, просто храни копейки, и ставь точку после 2х занков при выводе. Глупости. 4.54$, с них мы высчитываем пени в количестве 10% в месяц. Задача рассчитать пени за просроченную неделю равную четверти месяца (просто абстрактный пример): 454 / 100 * 10 / 4 = 11,35 центов Это — деньги. В каком формате ты собираешься хранить такую информацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2007, 12:42:42 |
|
||
|
Целая и дробная часть числа
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог Глупости. 4.54$, с них мы высчитываем пени в количестве 10% в месяц. Задача рассчитать пени за просроченную неделю равную четверти месяца (просто абстрактный пример): 454 / 100 * 10 / 4 = 11,35 центов Если ты бухгалтерии выдаш "на гора" эти дробные центы/копейки они тебя подвесят, причём не за ногу :) А любое начисление- бухгалтерская операция, с выставление счёта и т.д. Не может оно быть дробным. Так что надо пользоваться BigDecimal - на дураки в пентагоне были, когда для в 80х затребовали ЯП с числами с фиксированной точкой. Они нужны достаточно часто- и деньги- один из вариантов (хранить в целых копейках можно, но неудобно). -- Алексей Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 08:00:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34801371&tid=2144607]: |
0ms |
get settings: |
15ms |
get forum list: |
17ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
59ms |
get topic data: |
17ms |
get forum data: |
5ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 325ms |
| total: | 525ms |

| 0 / 0 |
