gpt4 book ai didi

c++ - C++中的大量十进制值存储

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:26:14 25 4
gpt4 key购买 nike

我想编写一个程序,返回给定条件下我们可以存活多少个月我们的每月支出、可支配收入金额和利率(均为整数)。例如,如果我们开始时可支配收入 = 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com