Как поклонник Джона Кармака, я читал общедоступный документ Id Tech Coding Conventions (по адресу ftp://). ftp.idsoftware.com/idstuff/doom3/source/CodeStyleConventions.doc, если вам интересно), и наткнулся на соглашение, которое я не совсем понял:
Используйте спецификацию точности для значений с плавающей запятой, если нет явной необходимости в двойном значении.
float f = 0.5f
Вместо
float f = 0.5;
И
float f = 1.0f;
Вместо
float f = 1.f;
Чем они отличаются?
Я могу понять разницу между ними в первом примере (последний выполняет преобразование double-to-float под капотом), хотя я подозреваю, что ему нужен только неглупый компилятор, чтобы поймать и создать тот же байт-код, для отсутствия разницы во времени выполнения.
Но есть ли случай, когда добавление завершающих нулей к вашему объявлению значения с плавающей запятой меняет ситуацию?
float f = 1.0f;
вместоfloat f = 1.0;
; наличие или отсутствие суффиксаf
имеет значение. (И в любом случае лучше использоватьdouble
, а неfloat
.) - person Keith Thompson   schedule 24.02.2013float
константойdouble
, значение которой изменяется при преобразовании вfloat
, но, как правило, он не должен давать такой же код, как если бы константа была дополнена суффиксомf
. Это связано с тем, что некоторые числа отличаются при первом преобразовании вdouble
, а затем вfloat
, чем при прямом преобразовании вfloat
. Для программиста было бы необычно использовать их намеренно, но это законное использование языка и должно быть скомпилировано, как указано. - person Eric Postpischil   schedule 24.02.2013