Усечение из double в float

Усечение из double в float

выскакивает даже при явном указании о приведении типа

выскакивает даже при явном указании о приведении типа

это предупреждение а не ошибка.

Это не ошибка это дурость MSVC.

warning C4305: инициализация: усечение из "double" в "float" как исправить это предупреждение ? Нужна большая точность а это неявное преобразование типов как я понимаю мешает.Вот код:

1 ответ 1

Ругается скорее всего в этой строке

все потому, что 9.81 считается типа double. Если нужен именно float (что бы убрать предупреждение), то пишите так

Но нужно помнить, что double имеет больше точность, чем float. Поэтому, Ваш комментарий Нужна большая точность немного смущает.

По факту, в этом примере кода, буква f ничего по факту не поменяет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками float double или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.12.20.35703

Значение с плавающей запятой, которое преобразуется в другой тип с плавающей запятой, не изменяется в значении, если исходное значение представлено точно в типе результата. A floating-point value that’s converted to another floating-point type undergoes no change in value if the original value is representable exactly in the result type. Если исходное значение является числовым, но отсутствует в точности, результатом будет либо следующее большее или следующее меньшее значение. If the original value is numeric but isn’t representable exactly, the result is either the next greater or next lower representable value. См. раздел ограничения констант с плавающей запятой для диапазона типов с плавающей запятой. See Limits on floating-point constants for the range of floating-point types.

Значение с плавающей запятой, которое преобразуется в целочисленный тип, сначала усекается путем удаления любого дробного значения. A floating-point value that is converted to an integral type is first truncated by discarding any fractional value. Если это усеченное значение может быть представлено в типе результата, результатом должно быть это значение. If this truncated value is representable in the result type, the result must be that value. Если он недоступен для представления, результирующее значение не определено. When it isn’t representable, the result value is undefined.

Блок, относящийся только к системам Microsoft Microsoft Specific

Компиляторы Майкрософт используют представление binary32 IEEE-754 для значений с плавающей запятой и представление binary64 для длинных Double и double. Microsoft compilers use IEEE-754 binary32 representation for float values, and binary64 representation for long double and double. Поскольку длинные Double и Double используют одно и то же представление, они имеют одинаковый диапазон и точность. Since long double and double use the same representation, they have the same range and precision.

Когда компилятор преобразует число типа Double или Long с плавающей запятой в float, оно округляет результат в соответствии с элементами управления среды с плавающей запятой, которые по умолчанию имеют значение "округлить до ближайшего числа, а также привязывается к четному". When the compiler converts a double or long double floating-point number to a float, it rounds the result according to the floating-point environment controls, which default to "round to nearest, ties to even." Если числовое значение слишком велико или слишком мало для представления в виде числового значения float , результат преобразования будет положительным или отрицательным бесконечностью в соответствии со знаком исходного значения, и возникает исключение переполнения, если оно включено. If a numeric value is too high or too low to be represented as a numeric float value, the conversion result is positive or negative infinity according to the sign of the original value, and an overflow exception is raised, if enabled.

Читайте также:  Телефон с двумя экранами yota

При преобразовании в целочисленные типы результат преобразования в тип, меньший Long , является результатом преобразования значения в Long, а затем преобразования в тип результата. When converting to integer types, the result of a conversion to a type smaller than long is the result of converting the value to long, and then converting to the result type.

Для преобразования в целочисленные типы по крайней мере до крупных типов преобразование значения, которое слишком велико или слишком мало для представления в типе результата, можетвернуть любое из следующих значений: For conversion to integer types at least as large as long, a conversion of a value that is too high or too low to represent in the result type may return any of the following values:

Результатом может быть значение Sentinel, которое представляет собой наиболее подходящие значения от нуля. The result may be a sentinel value, which is the representable value farthest from zero. Для подписанных типов это наименьшее представимое значение (0x800. 0). For signed types, it’s the lowest representable value (0x800. 0). Для неподписанных типов это наибольшее значение, которое может быть представлено (0xFF. F). For unsigned types, it’s the highest representable value (0xFF. F).

Результат может быть насыщенным, где значения, которые слишком высоки для представления, преобразуются в наиболее подходящие значения, а значения слишком низкие для представления преобразуются в наименьшее представимое значение. The result may be saturated, where values too high to represent are converted to the highest representable value, and values too low to represent are converted to the lowest representable value. Одно из этих двух значений также используется в качестве значения Sentinel. One of these two values is also used as the sentinel value.

Для преобразования в длинные или беззнаковыеlong в результате преобразования значений вне допустимого диапазона может быть некоторое значение, отличное от самого высокого или наименьшего значения. For conversion to unsigned long or unsigned long long, the result of converting an out-of-range value may be some value other than the highest or lowest representable value. Является ли результат отметками или насыщенным значением или не зависит от параметров компилятора и целевой архитектуры. Whether the result is a sentinel or saturated value or not depends on the compiler options and target architecture. Будущие выпуски компилятора могут возвращать значение насыщенного или Sentinel. Future compiler releases may return a saturated or sentinel value instead.

Читайте также:  Nikon d5200 kit 18 55mm

Завершение блока, относящегося только к системам Майкрософт END Microsoft Specific

В следующей таблице перечислены преобразования из типов с плавающей запятой. The following table summarizes conversions from floating types.

Таблица преобразований из типов с плавающей запятой Table of conversions from floating-point types

Исходный тип From Кому To Метод Method
float float char char Преобразование в значение long; преобразование значения long в char Convert to long; convert long to char
float float short short Преобразование в значение long; преобразование значения long в short Convert to long; convert long to short
float float int int Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде int, результат не определен. If result is too large to be represented as int, result is undefined.
float float long long Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком большой для представления в качестве значения long, результат не определен. If result is too large to be represented as long, result is undefined.
float float long long long long Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде длинногодлинного, результат не определен. If result is too large to be represented as long long, result is undefined.
float float unsigned char unsigned char Преобразовать в значение Long; Преобразование Long в char без знака Convert to long; convert long to unsigned char
float float unsigned short unsigned short Преобразование в значение long; преобразование значения long в unsigned short Convert to long; convert long to unsigned short
float float unsigned unsigned Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде неподписанногорезультата, результат не определен. If result is too large to be represented as unsigned, result is undefined.
float float unsigned long unsigned long Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде беззнакового типа Long, результат не определен. If result is too large to be represented as unsigned long, result is undefined.
float float длинное целое без знака unsigned long long Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде беззнакового типаLong, результат не определен. If result is too large to be represented as unsigned long long, result is undefined.
float float double double Представлять как Double. Represent as a double.
float float long double long double Представляется как длинное двойноезначение. Represent as a long double.
double double char char Преобразование в значение float; преобразование значения float в char Convert to float; convert float to char
double double short short Преобразование в значение float; преобразование значения float в short Convert to float; convert float to short
double double int int Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде int, результат не определен. If result is too large to be represented as int, result is undefined.
double double long long Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком большой для представления в качестве значения long, результат не определен. If result is too large to be represented as long, result is undefined.
double double unsigned char unsigned char Преобразовать в значение Long; Преобразование Long в char без знака Convert to long; convert long to unsigned char
double double unsigned short unsigned short Преобразование в значение long; преобразование значения long в unsigned short Convert to long; convert long to unsigned short
double double unsigned unsigned Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде неподписанногорезультата, результат не определен. If result is too large to be represented as unsigned, result is undefined.
double double unsigned long unsigned long Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде беззнакового типа Long, результат не определен. If result is too large to be represented as unsigned long, result is undefined.
double double длинное целое без знака unsigned long long Усечение до десятичной запятой. Truncate at decimal point. Если результат слишком велик для представления в виде беззнакового типаLong, результат не определен. If result is too large to be represented as unsigned long long, result is undefined.
double double float float Представление в качестве значения float. Represent as a float. Если Двойное значение не может быть представлено точно так же, как float, происходит ошибка потери точности. If double value can’t be represented exactly as float, loss of precision occurs. Если значение слишком большое для представления в качестве значения float, результат не определен. If value is too large to be represented as float, the result is undefined.
double double long double long double Значение long double обрабатывается как double. The long double value is treated as double.
Читайте также:  Что означает трубка с вай фай самсунг

Преобразования из типа long double следуют тому же методу, что и преобразования из Double. Conversions from long double follow the same method as conversions from double.

Ссылка на основную публикацию
Унитаз лира киров отзывы
Сырье также используется импортное, тщательно отобранное и экологически чистое — глина, гипс, каолин, полевой шпат, красители. Гарантия на производимые компанией...
Тор браузер андроид 4pda
Браузер Тор доступен не только для компьютеров и ноутбуков под управлением различных операционных систем. Разработчики обеспокоились и его выпуском для...
Тор браузер без установки
Tor Browser (ранее он назывался Tor Browser Bundle) – наиболее защищенный интернет-обозреватель из представленных в настоящий момент. Ввиду высокой популярности...
Унитаз ресса киров отзывы
Мы предлагаем унитазы росссийского производителя Роза (Киров). В нашем каталоге собрано 30 моделей по цене от 3 090р. Перейдите по...
Adblock detector