gpt4 book ai didi

c++ - 类型转换问题

转载 作者:行者123 更新时间:2023-12-02 10:02:38 25 4
gpt4 key购买 nike

我有一个关于在解决问题时遇到的类型转换错误的问题(底部的链接)。我的AC提交和WA提交之间的唯一区别是,在第一个提交中,我将类型转换为 double 而非浮点型。我非常感谢您澄清为什么float会产生错误。谢谢。

WA提交:

#include<bits/stdc++.h>
using namespace std;

int main()
{
int t;
cin>>t;
while(t--)
{
long long int a,b,c,d;
cin>>a>>b>>c>>d;
if(a<=b)
cout<<b<<endl;
else
{
if(d>=c)
cout<<-1<<endl;
else
{
long long int val = c - d;
long long int f = ceil((a-b)/((float)val));
cout<<(b + (c * f))<<endl;
}
}


}
return 0;
}

AC提交
#include<bits/stdc++.h>
using namespace std;

int main()
{
int t;
cin>>t;
while(t--)
{
long long int a,b,c,d;
cin>>a>>b>>c>>d;
if(a<=b)
cout<<b<<endl;
else
{
if(d>=c)
cout<<-1<<endl;
else
{
long long int val = c - d;
long long int f = ceil((a-b)/((double)val));
cout<<(b + (c * f))<<endl;
}
}


}
return 0;
}

Question

最佳答案

您需要了解,如果最终数字重复出现或具有非常长的小数部分(例如1.000000000078),则涉及十进制数字的计算会导致某些错误。由于double的精度为2倍,因此它能够处理这些错误(主要是舍入错误)。
在这些竞赛问题中尝试使用long double。

另外,this可能会有所帮助。

关于c++ - 类型转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61852175/

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