60
- это целое число, равно как 24
, 365
и 100
.Поэтому все выражение 60 * 60 * 24 * 365 * 100
выполняется с использованием целочисленной арифметики (компилятор оценивает выражение до того, как видит тип переменной, в которую вы его назначаете).
В типичной 32-разрядной архитектурецелое число со знаком может содержать только значения до 2 147 483 647.Таким образом, значение будет усечено до 32 бит до , и оно будет присвоено вашей переменной float
.
Если вы скажете компилятору использовать арифметику с плавающей точкой, например, нажав f
на первое значение, чтобы оно плавало, тогда вы получите ожидаемый результат.(Число с плавающей точкой, если int - это число с плавающей точкой, поэтому число с плавающей точкой распространяется на все выражение.) Например:
float x = 60f * 60 * 24 * 365 * 100;