C++ 舍入大十进制数 #包括 #包括 使用名称空间std; int main(){ 长双a; cin>>a; int64_t itg=int64_t(a); 长双d=a-itg; 如果(d==0) cout
您的号码超出了C++ 舍入大十进制数 #包括 #包括 使用名称空间std; int main(){ 长双a; cin>>a; int64_t itg=int64_t(a); 长双d=a-itg; 如果(d==0) cout,c++,C++,您的号码超出了int\u 64的范围。 如果您想处理这样的大数字,第一种方法是将其视为字符串,并根据需要处理该字符串。 例如,对于上面的问题,您可以读取字符串,在'.字符后面取数字,然后将其与'5'进行比较。 下面是一个例子,withint64\u t最多只能容纳10^18(10乘以18的幂),您的数字远高于此值。您的值大于int64\u t,为什么不直接使用std::round或std::floor?这是否回答了您的问题?@AlanBirtles我尝试过,但它返回的是e中的值,我想要准确的值v
int\u 64
的范围。
如果您想处理这样的大数字,第一种方法是将其视为字符串,并根据需要处理该字符串。例如,对于上面的问题,您可以读取字符串,在
'.
字符后面取数字,然后将其与'5'
进行比较。
下面是一个例子,with
int64\u t
最多只能容纳10^18(10乘以18的幂),您的数字远高于此值。您的值大于int64\u t
,为什么不直接使用std::round
或std::floor
?这是否回答了您的问题?@AlanBirtles我尝试过,但它返回的是e中的值,我想要准确的值value@Aquib使用std::cout
#include<iostream>
#include<string>
using namespace std;
int main(){
long double a;
cin>>a;
int64_t itg=int64_t(a);
long double d=a-itg;
if(d==0)
cout<<itg;
if(d>=0.5)
cout<<itg+1;
if(d<0.5&&d>0)
cout<<itg;
}