Авторские Материалы о событиях в Израиле на Ближнем Востоке и в мире

IsraMir.com - Израильская журналистика

Default color brown color green color red color blue color
Вы сейчас тут: Новости arrow Техотдел arrow Свет ученья arrow Программистам, создающим приложения дли финансового с
Skip to content
Программистам, создающим приложения дли финансового с Версия для печати Отправить на e-mail
Thursday, 31 August 2006 | Сайт «Java-академия» для раздела Ученье – свет
Программистам,создающимприложениядлифинансовогосектораisramir.comНам часто приходится работать с формулами и реализовывать сложные математические расчеты. И с ниже описанной ситуацией однажды, наверное, сталкивался каждый из нас.
Как вы думаете, что будет результатом выполнения вот такой программы?
 
 
public class Calculate
{
    public static void main(String args[])
    {
        System.out.println(2.00 – 1.10);
    }
}
 
Объяснение
Готов поспорить, что для многих ответом будет 0.90. И это не верно! Потому что программа не знает, сколько цифр после запятой вы хотите видеть, и значит, не выведет интуитивно ожидаемый результат. Все намного сложнее. Если вы знакомы с правилами конвертации числа с плавающей точкой в строковое значение Double.toSring() [Java-API], то вы, наверное, догадаетесь, что результатом выполнения программы будет наиболее приближенное число к 0.90. А значит 0.8999999999999999.
 
Не очень правильное, но все же решение, это использование функции printf.
 
System.out.println(“%.2f”,2.00 – 1.10);
 
Еще одним и более правильным решением является использование BigDecimal(String), но не BigDecimal(double). Так как BigDecimal(doble) вернет точное значение числа.
 
Например, new BigDecimal(.1) вернет 0.1000000000000000055511151231257827021181583404541015625. Правильное использование BigDecimal в программе поможет нам получить желаемый результат.
 
import java.math.BigDecimal;
public class Calculate
{
    public static void main(String args[])
    {
        System.out.println(new BigDecimal(“2.00”.substruct(new BigDecimal(“1.10”)));
    }
}
 
 
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:


Автотранслитерация: выключена

Защитный код

Powered by jComments