Использование буквы "e" в записи чисел Java

В других языках таких как JS, PHP, Python запись чисел с использованием буквы e не вызывает никаких трудностей

const number = 1e6
// Будет равно 1 000 000

но в Java

public class main {
public static void main(String[] args) {
    int a = 1e6;
}}

Выводится:

java: incompatible types: possible lossy conversion from double to int

Причём с числами с плавающей запятой никаких ошибок не возникает. Но с целыми...

double a = 1e6;
//Сохранится как 1000000.00.

Кто может объяснить почему так, как это исправить?


Ответы (1 шт):

Автор решения: gil9red

Потому что такое выражения - это представление вещественного числа, а присваивание вещественных чисел в целые может привести к потере данных, поэтому это нужно явно делать:

int a = (int) 1e6;
System.out.println("a: " + a);
// a: 1000000

Подобные числа можно еще в таком виде описывать:

int b = 1_000_000;
System.out.println("b: " + b);
// b: 1000000
→ Ссылка