I've coded using float variables before and never had this problem.
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: $" <
cout << "Sales Tax: $" << stx << endl;
cout << "Total: $" << subtotal+stx << endl;
relatively strait forward code
warning C4305: '=' : truncation from 'double' to 'float'
I understand the idea of data being truncated (and I also know that you can write the f at the end of the variable. But if variables are declared as float why is the compiler interpreting the literal values as as doubles if it was declared as floats.
I looked up a few other tickets and they were different then my inquiry I can't seem to find a solution as to why the data is being read as a double if its declared as a float.
解决方案why is the compiler interpreting the literal values as as doubles
Because that's how literals are interpreted, unless you add modifiers to specify a different type.
a=15.95f;
^ gives the literal "float" type
But if variables are declared as float...
The type of an expression never depends on how the expression is used; so 15.95 has type double whatever you do with it. The type is converted for use in a larger expression, if necessary, and that's what gives the warning in this case.