当您转换
double到
int,值的精度损失。例如,当您将4.8657(double)转换为int时,int值将为4.Primitive
int不存储十进制数字,因此您将丢失0.8657。
在您的情况下,0.7是一个双精度值(除非提到float-0.7f,否则浮点默认情况下被视为double)。计算时
price*much*0.7,答案是一个双精度值,因此编译器不允许您将其存储在整数类型中,因为这可能会导致精度损失。也就是说
possiblelossy conversion,您可能会失去精度。
那你能做什么呢?您需要告诉编译器您确实想要这样做。您需要告诉编译器您知道自己在做什么。因此,使用以下代码将double显式转换为int:
int total2= (int) price*much*0.7; //also called as type casting
在您的情况下,由于您正在计算成本,因此建议您将变量声明
total2为double或float类型。
double total2=price*much*0.7; float total2=price*much*0.7; //will work



