В C++ (и C) литерал с плавающей запятой без суффикса по умолчанию равен double
, а суффикс f
- float
. Но что такое суффикс для получения long double
?Что такое суффикс C++ для длинных двойных литералов?
Не зная, я определил бы, скажем,
const long double x = 3.14159265358979323846264338328;
Но мое беспокойство, что переменная x
содержит меньшее количество значащих битов 3.14159265358979323846264338328
чем 64, потому что это double
буквальным. Это беспокойство оправдано?
Просто предобработки этого файла '#include LDBL_MAX' и вы видите' 1.18973149535723176502e + 4932L', которая отвечает на ваш вопрос. –
Что касается вопроса «это волнение оправдано», это действительно зависит. Ваше значение PI имеет точность 1e-28. Машина epsilon для double составляет ~ 2.22e-16, поэтому она меньше, чем вы хотите, чтобы точно зафиксировать это число. Это имеет значение? В зависимости от того, нужно ли вам быть точным в ваших расчетах ... – IdeaHat
@EricPostpischil это явно показывает, как изложить константу 'long double' ... (суффикс L) –