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;
}