Мой вопрос заключается в том, гарантировано ли у всех целочисленных значений идеальное двойное представление.
Рассмотрим следующий пример кода, который печатает "Тот же":
// Example program
#include <iostream>
#include <string>
int main()
{
int a = 3;
int b = 4;
double d_a(a);
double d_b(b);
double int_sum = a + b;
double d_sum = d_a + d_b;
if (double(int_sum) == d_sum)
{
std::cout << "Same" << std::endl;
}
}
Гарантируется ли это для любой архитектуры, любого компилятора, любых значений a
и b
? Будет ли любое целое число i
преобразовано в double
, всегда будет представлено как i.0000000000000
, а не, например, как i.000000000001
?
Я попробовал это для некоторых других чисел, и это всегда было правдой, но не смогло найти ничего о том, совпадение или дизайн.
Примечание. Это отличается от этого вопроса (кроме языка), так как я добавляю два целых числа.