C++ 从数学C++;

C++ 从数学C++;,c++,C++,现在我的代码是这样工作的,当我把他打印出来的时候,因为编译器的四舍五入错误,比如说0.95*100,它给了我94,或者不是95。我知道数学是如何正常计算的,但由于这个舍入误差,我无法计算 也不要担心问我为什么同时使用C和C++。因为这是我的导师想要的 这是相关代码 if (dollarAmount < 10.00 && dollarAmount >= 1.00) { cents = (dollarAmount - static_cast<int>(

现在我的代码是这样工作的,当我把他打印出来的时候,因为编译器的四舍五入错误,比如说0.95*100,它给了我94,或者不是95。我知道数学是如何正常计算的,但由于这个舍入误差,我无法计算

也不要担心问我为什么同时使用C和C++。因为这是我的导师想要的

这是相关代码

if (dollarAmount < 10.00 && dollarAmount >= 1.00)
{
    cents = (dollarAmount - static_cast<int>(dollarAmount)) * 100;
    digit = (((static_cast<int>(dollarAmount)/ 1)));

    strcat(amountInWords, lookUp[digit]);
    strcat(amountInWords, " dollars and ");

}
if(dollarAmount<10.00&&dollarAmount>=1.00)
{
仙=(多拉蒙特-静态施法(多拉蒙特))*100;
数字=((静态施法(dollarAmount)/1));
strcat(数量词,查找[数字]);
strcat(amountInWords,“美元和”);
}
整个项目代码:

使用而不是
静态\u cast
。实际值与浮点值之间的差值为0.0000000somethingsmall。四舍五入总能给出正确答案

此外,在乘以100后,仅取整

使用而不是
静态施法
。实际值与浮点值之间的差值为0.0000000somethingsmall。四舍五入总能给出正确答案


另外,在
乘以100后,只对进行舍入。

当舍入很重要时,不要使用浮点变量。
只需使用长变量来存储美分。

当舍入很重要时,不要使用浮点变量。
只需使用一个长变量来存储美分。

浮点数容易出现精度错误。不要将货币值存储为美元-存储为美分,并使用整数进行算术运算,然后转换为美元进行显示。浮点数容易出现精度错误。不要将货币值存储为美元-存储为美分并使用整数进行算术运算,然后转换为美元进行显示。Round仍然不能满足我的要求。你能给我举个例子说明你的意思吗?因为我查看了该函数的引用,它四舍五入到最接近的整数,如果我的金额是153.66,我将得到一个负数,如果我做金额-四舍五入(amound)*100;我还研究了truncate,它也在做同样的事情。@TheMrDrake-不过,@Christoph是对的。使用
长数量的组件会更好。除非你真的需要零碎的分钱。圆仍然不能满足我的要求。你能给我举个例子说明你的意思吗?因为我查看了该函数的引用,它四舍五入到最接近的整数,如果我的金额是153.66,我将得到一个负数,如果我做金额-四舍五入(amound)*100;我还研究了truncate,它也在做同样的事情。@TheMrDrake-不过,@Christoph是对的。使用
长数量的组件会更好。除非你真的需要零碎的美分,你是什么意思?美分是一个整数。我将美元金额存储为双精度。是的,大多数人在看到小数点时默认使用浮点。然而,浮点格式的关键优势在于小数点可以有效地随大小变化而浮动,而不仅仅是它有一个小数点。浮动行为有明显的缺点,例如舍入精度。如果你提前知道大小,最好使用更自然的单位,使最小的数量为1(例如,使用美分而不是美元),然后坚持使用整数。不要说像double dollarAmount=3.14这样的话,而是说long centAmount=314
。你是什么意思?美分是一个整数。我将美元金额存储为双精度。是的,大多数人在看到小数点时默认使用浮点。然而,浮点格式的关键优势在于小数点可以有效地随大小变化而浮动,而不仅仅是它有一个小数点。浮动行为有明显的缺点,例如舍入精度。如果你提前知道大小,最好使用更自然的单位,使最小数量为1(例如,使用美分而不是美元),然后坚持使用整数。不要说类似于
double dollarAmount=3.14
,而是说
long centAmount=314