В C задает 2.0f так же, как 2.000000f?
Являются ли эти строки одинаковыми?
float a = 2.0f;
и
float a = 2.000000f;
Ответы
Ответ 1
Да, это так. Независимо от того, какое представление вы используете, когда код компилируется, число будет преобразовано в уникальное двоичное представление. Существует только один способ представления 2
в стандарте IEEE 754 binary32, который используется на современных компьютерах для представления чисел float
.
Ответ 2
Единственное, что должен сказать стандарт C99 в этом вопросе: (раздел 6.4.4.2):
Для десятичных плавающих констант... результат будет либо ближайшее представимое значение, или большее или меньшее представляемое значение немедленно рядом с ближайшим представимым значением, выбранным в соответствии с реализацией.
Этот бит о "определяемом реализацией" означает, что технически реализация могла бы выбрать что-то другое в каждом случае. Хотя на практике ничего странного не произойдет для значения, такого как 2.
Важно помнить, что стандарты C не требуют IEEE-754.
Ответ 3
Да, они одинаковы.
Простая проверка:
http://codepad.org/FOQsufB4
int main() {
printf("%d",2.0f == 2.000000f);
}
^ Будет вывод 1 (true)
Ответ 4
Да Конечно, это то же самое лишние нули справа игнорируются, просто нравится нули слева