我想编写一个程序,返回给定条件下我们可以存活多少个月 我们的每月支出、可支配收入金额和利率(均为整数)。 例如,如果我们开始时可支配收入 = 1000,利率 = 5%,每月支出 = 100,则
after first month: 1000*1.05 - 100 = 950, we have 950 dollars left
after second month: = 950*1.05 - 100 = 897.5
等等,最终,我们可以活过14个月。
我用C++写了下面的代码:
int main(){
int i=0;
int initialValue;
int interest;
int monthly;
double value=1.0*initialValue;
double r=1+1.0*interest/100;
while(value > 0){
if(value < monthly){
break;
}
else
{
value=value*r-monthly;
i++;
}
};
cout<<i;
return 0;
}
但是对于足够大的 initialValue 值和足够小的 monthly 值,我编写的程序运行速度非常慢,以至于无法使用。是不是代码有问题导致运行不好(或者很慢)?
如有任何帮助,我们将不胜感激。
最佳答案
double
无法精确存储数字。这样做的一个结果是,当您从一个非常大的数字中减去一个非常小的数字时,结果与原来的大值并没有改变。
此问题的一个解决方案是使用 int
进行计算。将值视为便士数,而不是美元数。
关于c++ - C++中的大量十进制值存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25354736/