Я недавно заметил некоторый код в рамках, в котором я работаю, с преобразованием некоторых переменных в двойные, а затем обратно, когда к ним обращается инфраструктура. В стандарте C++ 11 гарантируется ли работа без потери точности для любых интегральных типов? Если да, то какой? Существуют ли какие-либо дополнительные типы, которые являются универсальными для такого преобразования в общих реализациях?Преобразование типов без потери точности
Кроме того, есть ли способ проверить во время компиляции, что преобразование безопасно таким образом? По сути, я хотел бы что-то вроде:
static_assert(T(double(T type))==type);
Какие типы вы используете в своем коде? Есть ли причина, по которой вы не используете 'double' для начала, чтобы избежать этих преобразований? –
@ Code-Apprentice Типы устанавливаются каркасом (т. Е. Я не могу их изменить). Например, 'm_type' является' unsigned int' внутри, но когда он обращается через фрейм, он преобразуется в 'double'. – Chris
@ Code-Apprentice Кроме того, я преобразовываю их обратно в исходный тип, чтобы сэкономить место. Я потом их сериализую, и даже с этим преобразованием он все еще занимает около терабайта, поэтому оптимизация на этом уровне очень важна. – Chris