public class Main {
public static void main (String [] args) {
int big = 1234567890;
System.out.println(gerDifference(int big))
}
public static int getDifference (int big) {
float approx = big; //approx: 1.23456794E9. big:1234567890
return big - (int)approx;
}
}
Asked
Active
Viewed 108 times
0
1 Answers
0
Здесь есть два момента:
- Целое число при преобразовании в вещественное одинарной точности теряет значащие цифры - потому что для хранения мантиссы (цифр) вещественного одинарной точности отводится меньше разрядов (24), чем у целого 32-битового.
- Вещественное число выводится на экран в экспоненциальной форме - потому что так принято по-умолчанию для чисел, у которых 7 значащих цифр (для одинарной точности) не рядом с десятичной точкой (от Х,ХХХХХХ (тут точно не уверен) до ХХХХХХХ).
rotabor
- 4,251
floatстандартная нотация научная, это вопрос представления, 2) Типаfloatнедостаточно для представления чисел с такой точностью – CrazyElf Nov 09 '22 at 08:59