C++ 静态强制转换未按C+中的预期工作+;
这是我的代码:C++ 静态强制转换未按C+中的预期工作+;,c++,C++,这是我的代码: static_cast<double>(income_Tax = incomeTax*GrossAmount); static_cast<double>(provincial_Tax = provincialTax*GrossAmount); static_cast<double>(social_Security_Tax= socialSecurityTax*GrossAmount); static_cast<double>(med
static_cast<double>(income_Tax = incomeTax*GrossAmount);
static_cast<double>(provincial_Tax = provincialTax*GrossAmount);
static_cast<double>(social_Security_Tax= socialSecurityTax*GrossAmount);
static_cast<double>(medicaid_Tax = medicare*GrossAmount);
static_cast<double>(pension_Plan = pensionPlan*GrossAmount);
static_cast<double>(health_Insurance = healthInsurance);
static_cast<double>(netPay = GrossAmount - (income_Tax + provincial_Tax + social_Security_Tax + medicaid_Tax + pension_Plan + health_Insurance));
最终的结果是这样的:
总金额:5000美元
联邦所得税:……750美元
省税:175.4美元
社会保障税:……287.5美元
等
如何使最终值(例如,netPay
)为2个小数点,而不考虑任何因素
static\u cast
操作,否则您希望将static\u cast
的结果存储在某个地方。e、 g.double income\u Tax=静态成本(incomeTax*GrossAmount)代码>阅读
int
转换为double
并不需要任何类型的强制转换。刚好double d=incomeTax*GrossAmount代码>
双精度
通常会打印超过2个小数点。你可能想看看这个static\u cast
操作,否则您希望将static\u cast
的结果存储在某个地方。e、 g.double income\u Tax=静态成本(incomeTax*GrossAmount)代码>阅读
int
转换为double
并不需要任何类型的强制转换。刚好double d=incomeTax*GrossAmount代码>
双精度
通常会打印超过2个小数点。你可能想看看这个static\u cast
操作,否则您希望将static\u cast
的结果存储在某个地方。e、 g.double income\u Tax=静态成本(incomeTax*GrossAmount)代码>阅读
int
转换为double
并不需要任何类型的强制转换。刚好double d=incomeTax*GrossAmount代码>
双精度
通常会打印超过2个小数点。你可能想看看这个static\u cast
操作,否则您希望将static\u cast
的结果存储在某个地方。e、 g.double income\u Tax=静态成本(incomeTax*GrossAmount)代码>阅读
int
转换为double
并不需要任何类型的强制转换。刚好double d=incomeTax*GrossAmount代码>
双精度
通常会打印超过2个小数点。你可能想看看这个您编写的代码(
static_cast(income_Tax=incomeTax*GrossAmount);
)相当于:
income_Tax = incomeTax*GrossAmount;
double tmp = income_Tax;
static_cast<double> tmp;
但是,如果所得税
的类型为双重
,则将隐式应用静态转换
,因此您不必这样做
至于有两个十进制空间,您不能用双精度强制执行。数字将具有其认为必要的精度。您可以做的是始终以两位数的精度显示数字:
std::cout << std::fixed << std::setprecision(2) << income_Tax;
std::cout您编写的代码(static_cast(收入税=incomeTax*GrossAmount);
)相当于:
income_Tax = incomeTax*GrossAmount;
double tmp = income_Tax;
static_cast<double> tmp;
但是,如果所得税
的类型为双重
,则将隐式应用静态转换
,因此您不必这样做
至于有两个十进制空间,您不能用双精度强制执行。数字将具有其认为必要的精度。您可以做的是始终以两位数的精度显示数字:
std::cout << std::fixed << std::setprecision(2) << income_Tax;
std::cout您编写的代码(static_cast(收入税=incomeTax*GrossAmount);
)相当于:
income_Tax = incomeTax*GrossAmount;
double tmp = income_Tax;
static_cast<double> tmp;
但是,如果所得税
的类型为双重
,则将隐式应用静态转换
,因此您不必这样做
至于有两个十进制空间,您不能用双精度强制执行。数字将具有其认为必要的精度。您可以做的是始终以两位数的精度显示数字:
std::cout << std::fixed << std::setprecision(2) << income_Tax;
std::cout您编写的代码(static_cast(收入税=incomeTax*GrossAmount);
)相当于:
income_Tax = incomeTax*GrossAmount;
double tmp = income_Tax;
static_cast<double> tmp;
但是,如果所得税
的类型为双重
,则将隐式应用静态转换
,因此您不必这样做
至于有两个十进制空间,您不能用双精度强制执行。数字将具有其认为必要的精度。您可以做的是始终以两位数的精度显示数字:
std::cout << std::fixed << std::setprecision(2) << income_Tax;
std::cout
定点显示(即2个小数点)的概念是一种输出修改器。所以有很多例子
继续处理其他错误
定点显示(即2个小数点)的概念是一种输出修改器。所以有很多例子
继续处理其他错误
定点显示(即2个小数点)的概念是一种输出修改器。所以有很多例子
继续处理其他错误
定点显示(即2个小数点)的概念是一种输出修改器。所以有很多例子
继续处理其他错误。赋值运算符返回一个值。在强制转换表达式中执行赋值,然后赋值返回相同的值,该值被强制转换为double且未使用。您没有读到错误消息吗?您必须将static\u cast
的结果分配给某个变量,就像编译器所说的那样。(同样,您必须编写int x=f(5);
而不是f(int x=5);
)但是如果您需要正好两位小数开始,则double
是一种非常糟糕的数据类型,因此,这可能是一个XY问题,而解决您的问题的最佳解决方案将是完全不同的。在回复您删除的评论时:请将警告视为错误(使用-Werror
标志)。当您开始学习编程时,编译器可能是正确的,您应该认真对待它的警告。也就是说,即使是有经验的程序员也被建议编写警告代码