You are here: Home » Учебник » Числовые типы данных и операции

Числовые типы данных и операции

Ключевой момент: Java имеет шесть типов для целых числе и числе с плавающей запятой с операторами +, -, *, / и %.

1. Числовые типы

Каждый тип данных имеет диапазон значений. Компилятор выделяет пространство памяти для каждой переменной или константы в соответствии с её типом данных. Java предоставляет восемь примитивных типов данных для числовых значений, символов и логических значений. В этом разделе представлены числовые типы данных и операторы.

В таблице перечислены шесть числовых типов данных, их диапазоны и размеры их хранения.

Имя (тип) Диапазон Размер хранения
byte от -27 до 27 - 1 (от -128 до 127) 8-бит со знаком
short от -215 до 215 - 1 (от -32768 до 32767) 16-бит со знаком
int от -231 до 231 - 1 (от -2147483648 до 2147483647) 32-бита со знаком
long от -263 до 263 - 1 (т.е., от -9223372036854775808 до 9223372036854775807) 64-бита со знаком
float

Отрицательный диапазон: от -3.4028235E + 38 до -1.4E - 45

Положительный диапазон: от 1.4E - 45 до 3.4028235E + 38

32-бита IEEE 754
double

Отрицательный диапазон: от -1.7976931348623157E + 308 до -4.9E - 324

Положительный диапазон: от 4.9E - 324 до 1.7976931348623157E + 308

64-бита IEEE 754

Примечание: IEEE 754 является стандартом, утвержденным Институтом инженеров по электротехнике и электронике для представления на компьютерах чисел с плавающей запятой. Стандарт широко принят. Java использует 32-разрядный IEEE 754 для типа float и 64-разрядный IEEE 754 для типа double. Стандарт IEEE 754 также определяет специальные значения с плавающей запятой, которые перечислены в Приложении E.

Целочисленные типы

Java использует четыре типа целых чисел: byte, short, int и long. Выбирайте тип, который больше всего подходит для вашей переменной. Например, если вы знаете, что целое число, хранимое в переменной, находится в диапазоне байта, объявите переменную как byte. Для простоты и последовательности, большую часть времени на этом сайте мы будем использовать для целых чисел тип int.

Типы с плавающей запятой

Java использует два типа чисел с плавающей запятой: float и double. Тип double в два раза больше чем float. Поэтому double известен как число с двойной точностью, а float – как число с одинарной точностью. Обычно вам следует использовать тип double, поскольку он более точен чем тип float.

2. Считывание чисел с клавиатуры

Вы знаете как использовать метод nextDouble() из класса Scanner для считывания значения double с клавиатуры. Вы также можете использовать методы, представленные в следующей таблице, для чтения чисел типов byte, short, int, long и float:

Метод Описание
nextByte() прочитать число типа byte
nextShort() прочитать число типа short
nextInt() прочитать число типа int
nextLong() прочитать число типа long
nextFloat() прочитать число типа float
nextDouble() прочитать число типа double

Далее примеры для чтения данных различного типа с клавиатуры:

Scanner input = new Scanner(System.in);
System.out.print("Введите значение byte: ");
byte byteValue = input.nextByte();

System.out.print("Введите значение short: ");
short shortValue = input.nextShort();

System.out.print("Введите значение int: ");
int intValue = input.nextInt();

System.out.print("Введите значение long: ");
long longValue = input.nextLong();

System.out.print("Введите значение float: ");
float floatValue = input.nextFloat();

Если вы введёте значение из некорректного диапазона или формата, случиться ошибка выполнения. Например, в строке 3 вы введёте 128, произойдёт ошибка, поскольку 128 находится вне диапазона чисел типа byte.

3. Числовые операторы

Операторы +, -, *, /, % и операнды

Операторы для числовых типов данных включают стандартные арифметические операторы: сложение (+), вычитание (), умножение (*), деление (/) и остаток от деления (%).

Имя Значение Пример Результат
+ Сложение 34 + 1 35
- Вычитание 34.0 - 0.1 33.9
* Умножение 300 * 30 9000
/ Деление 1.0 / 2.0 0.5
% Остаток от деления 20 % 3 2

Целочисленное деление

Когда оба операнда деления (делимое и делитель) являются целыми числами, результатом деление будет частное без дробной части. Например, 5 / 2 даёт 2, а не 2.5, а -5 / 2 даёт -2, а не -2.5. Для выполнения деления с плавающей точкой один из операндов должен быть числом с плавающей запятой. Например, 5.0 / 2 даёт 2.5.

Оператор %, известный как остаток от деления, или оператор модуля, даёт остаток после деления. Операндом слева – это делимое, а операнд справа – делитель. Поэтому 7 % 3 даёт 1, 3 % 7 даёт 3, 12 % 4 даёт 0, 26 % 8 даёт 2 и 20 % 13 даёт 7.

Оператор % часто используется для положительных целых чисел, но также может использоваться для отрицательных и значений с плавающей запятой. Остаток от деления является отрицательным только если отрицательным является делимое. Например, -7 % 3 даёт -1, -12 % 4 даёт 0, -26 % -8 даёт -2 и 20 % -13 даёт 7.

Остаток от деления очень полезен в программировании. Например, чётные числа % 2 всегда 0, а нечётные числа % 2 всегда 1. Так вы можете использовать это свойство для определения, является ли число чётным или нечётным. Если сегодня суббота, то суббота снова будет через 7 дней. Предположим, вы и ваши друзья собираетесь встретиться через 10 дней. Какой день будет через 10 дней? Вы можете узнать, что будет вторник используя следующее выражение:

Следующая программа считает сколько минут и секунд содержится в количестве введённых секунд. Например, 500 секунд содержат 8 минут и 20 секунд.

import java.util.Scanner;

public class DisplayTime {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // Запрос пользователю на ввод
        System.out.print("Введите число секунд: ");
        int seconds = input.nextInt();

        int minutes = seconds / 60; // Найти минуты в секундах
        int remainingSeconds = seconds % 60; // Оставшиеся секунды
        System.out.println(seconds + " секунд это " + minutes
                + " минут и " + remainingSeconds + " секунд");
    }
}

Метод nextInt() (строка 8) считывает число для seconds. Строка 10 получает минуты используя seconds / 60. Строка 11 (seconds % 60) получает оставшиеся секунды без минут.

Унарные и бинарные операторы

Операторы + и - могут быть как унарными, так и бинарными. Унарный оператор имеет только один операнд; а бинарные – два. Например, оператор - в -5 – это унарный оператор, показывающей, что число 5 является отрицательным, в то время как оператор - в 4 - 5 является бинарным оператор для вычитания 5 из 4.

4. Операции возведения в степень

Метод Math.pow(a, b) может использоваться для вычисления ab. Метод pow определён в классе Math в Java API. Этот метод вызывается с использованием синтаксиса Math.pow(a, b) (например, Math.pow(2, 3)), который возвращает результата ab (23). Здесь a и b являются параметрами для метода pow, а числа 2 и 3 настоящими значениями, используемыми для вызова метода. Например:

System.out.println(Math.pow(2, 3)); // Выведет 8.0
System.out.println(Math.pow(4, 0.5)); // Выведет 2.0
System.out.println(Math.pow(2.5, 2)); // Выведет 6.25
System.out.println(Math.pow(2.5, -2)); // Выведет 0.16

В одной из последующих главах будут даны дополнительные подробности о методах. На данный момент всё, что вам нужно знать, это как вызывать метод pow для выполнения операций возведения в степень.

Проверь себя:

  1. Найдите наибольшие и наименьшие byte, short, int, long, float и double. Какой тип данных требует самое маленькое количество памяти?
  2. Покажите результат следующих остатков от делений.
56 % 6
78 % -4
-34 % 5
-34 % -5
5 % 1
1 % 5
  1. Если сегодня вторник, какой будет день через 100 дней?
  2. Каким будет результат 25 / 4? Как нужно переписать это выражение, если в качестве результата мы хотим получить число с плавающей запятой?
  3. Покажите результат следующего кода:
System.out.println(2 * (5 / 2 + 5 / 2));
System.out.println(2 * 5 / 2 + 2 * 5 / 2);
System.out.println(2 * (5 / 2));
System.out.println(2 * 5 / 2);
  1. Являются ли следующие инструкции корректными? Если так, покажите вывод.
System.out.println("25 / 4 это " + 25 / 4);
System.out.println("25 / 4.0 это " + 25 / 4.0);
System.out.println("3 * 2 / 4 это " + 3 * 2 / 4);
System.out.println("3.0 * 2 / 4 это " + 3.0 * 2 / 4);
  1. Напишите инструкцию для вывода результата 23.5.
  2. Предположим m и r целые числа. Напишите инструкцию Java для mr2 чтобы получить результат с плавающей точкой.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo