Класс Big Decimal
Приведем еще один пример. Напишем простенький калькулятор, выполняющий четыре арифметических действий с числами любой величины. Он работает из командной строки. Программа представлена в листинге 4.5, а примеры использования калькулятора – на рис. 4.6.
Листинг 4.5. Простейший калькулятор.
import Java.math.*; class Calc{ public static void main(String[] args){ if (args.length < 3){ System.err.println("Usage: Java Calc operand operator operand"); return; } BigDecimal a = new BigDecimal(args[0]); BigDecimal b = new BigDecimal(args[2]); switch (args[l].charAt(0)){ case '+': System.out.println(a.add(b)); break; case '-': System.out.println(a.subtract(b)); break; case '*': System.out.println(a.multiply(b)); break; case '/': System.out.println(a.divide(b, BigDecimal.ROUND_HALF_EVEN)); break; default: System.out.println("Invalid operator"); } } }
Почему символ умножения – звездочка – заключен на рис. 4.6 в кавычки? "Юниксоидам" это понятно, а для других дадим краткое пояснение.
Это особенность операционной системы, а не языка Java. Введенную с клавиатуры строку вначале просматривает командная оболочка (shell) операционной системы, а звездочка для нее – указание подставить на это место все имена файлов из текущего каталога. Оболочка сделает это, и интерпретатор Java получит от нее длинную строку, в которой вместо звездочки стоят имена файлов через пробел.
Звездочка в кавычках понимается командной оболочкой как обычный символ. Командная оболочка снимает кавычки и передает интерпретатору Java то, что надо.
Рис. 4.6. Результаты работы калькулятора