В C ++ значение с плавающей запятой усекается от двойного

Я кодировал с помощью переменных с плавающей точкой раньше и никогда не имел этой проблемы.

float  a, b, subtotal, stx;
a=15.95;
b=24.95;
subtotal=a+b;
stx=subtotal*.07;

cout << "Item 1: $" << a << endl;
cout << "Item 2: $" << b << endl;
cout << "\nSubtotal: $" <<subtotal<< endl;
cout << "Sales Tax: $" << stx << endl; 
cout << "Total: $"  << subtotal+stx << endl;

относительно прямой код вперед

warning C4305: '=' : truncation from 'double' to 'float'

Я понимаю идею обрезания данных (и я также знаю, что вы можете написатьf в конце переменной. Но если переменные объявлены как float, почему компилятор интерпретирует литеральные значения как удвоенные, если они были объявлены как float.

Я просмотрел несколько других билетов, и они отличались от моего запроса. Я не могу найти решение, почему данные читаются как двойные, если они объявлены как плавающие.

Ответы на вопрос(1)

Ваш ответ на вопрос