| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Автоматическое округление до целого |
| Автор: Vitaly333 3.4.2008, 00:51 | ||||
Вообщем поясню проблему на примере: Есть три числа a,b,c.Число "с" вычисляеться по формуле: c = a/b; Когда все три числа - все вещественного типа то всё нормально Например:
c = 0.25 Но когда "a" и "b" целые, а "c" вещественное, то при вычислении последнего его вычисленное значение автоматически становиться целым. Например:
c = 0. Почему так происходит "c" же вещественного типа оно и должно получать вещественное значение , почему оно округляеться и как это испрвить без явного приведения типа. |
| Автор: Kangaroo 3.4.2008, 01:03 |
| Это особенности оператора / для вещественных и целых чисел. Так что только даблами. |
| Автор: niasilil 3.4.2008, 02:59 |
| чтобы ответить на вопрос "почему", надо копать в сторону того как процессор работает с целыми числами и как с числами с плавающей запятой. (в курсе Computer Archutecture ) Краткий ответ - "потому что так есть". |
| Автор: math64 3.4.2008, 08:51 | ||
Нужно писать так:
|
| Автор: Platon 3.4.2008, 09:24 | ||
будем меряться писюльками?
|
| Автор: AlexeyVorotnikov 3.4.2008, 09:37 |
| В JLS сказано, что результат операции / для двух целых чисел является целым числом. |
| Автор: LSD 3.4.2008, 13:22 | ||||
Этот код хуже: 1. явное приведение к double более очевидно 2. лишнее умножение |
| Автор: Platon 3.4.2008, 14:34 |
| LSD, да, это очевидно, просто играюсь в topcoder, там чтоб быстрей набрать код, пишу так. |
| Автор: Kangaroo 3.4.2008, 14:39 | ||
Там на скорость набора соревнования? |
| Автор: math64 3.4.2008, 15:12 | ||
|
| Автор: Platon 3.4.2008, 17:51 |
| Kangaroo, 1-я задача как правило легкая, умные, быстрочитающие и просто шустрые, могут сдать задачку за минуту math64, красиво и локанично |