Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用时出现大数字问题<;iomanip>;cpp中的较大值_C++ - Fatal编程技术网

C++ 使用时出现大数字问题<;iomanip>;cpp中的较大值

C++ 使用时出现大数字问题<;iomanip>;cpp中的较大值,c++,C++,在排序和显示大数字时,您通常会在enotation中显示大数字。我试图使用cpp中的库来显示整数,但对于非常大的数字,显示失败 //big sorting #include<bits/stdc++.h> #include<iomanip> using namespace std; int main() { int n; cin>>n; double arr[n];

在排序和显示大数字时,您通常会在enotation中显示大数字。我试图使用cpp中的
库来显示整数,但对于非常大的数字,显示失败

 //big sorting
    #include<bits/stdc++.h>
    #include<iomanip>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        double arr[n];
        for (int i = 0;i < n; i++)
            cin>>arr[i];

        sort(arr, arr+n);
        cout<<fixed<<setprecision(0);
        for (int i = 0;i < n; i++)
            cout<<arr[i]<<endl; 
    }
预期产出:

1
3
3
5
10
31415926535897932384626433832795
实际产量:

1
3
3
5
10
31415926535897933290036940242944

最后一个数字被弄乱了。

双精度类型的精度只有15个十进制数字,因此非常大的整数不能用双精度类型来表示,而不会损失精度。

请阅读更多,可能是C++11标准。

还读取C++编译器的文档,例如(调用<代码> G++<代码>)或(调用<代码> CLAN++<代码>)。当然要读a,因为C++是一种非常难的编程语言。使用C++标准和.< 大的数字本机不适合计算机内存(或其寄存器)。例如,用Linux/X8664编译的C++代码,<代码> int >代码只有32位。

考虑使用。你可能对我感兴趣

浮点数很奇怪。请务必阅读著名的网站,并看到答案

#包括

是错误的,因为它是非标准的。养成只包含用户需要的标题的习惯,除非您使用

花些时间阅读更多关于和的信息。有些概念在编程时非常有用:许多计算机都是以232或264模计算的

对现有软件的C++源代码(如ON或OR)进行了研究。如果你使用Linux,它有一个很好的C++代码。您甚至可以浏览内部和/或的源代码,这两个都是优秀的C++开源编译器。 在实践中,还要阅读一些工具,如(用C编写的)或(用C++编写的开源)

不要忘记使用系统(我推荐)

阅读

编译C++代码时启用所有警告和调试信息(使用<代码> G++-Walth-WOTU-G<代码> > 当然,请阅读您最喜欢的调试器的文档。 我是一个快乐的用户


考虑使用诸如or之类的工具。

你能给我一个解决方案吗?比如我应该使用long-long-int还是其他什么?根据你的意图,有多种可能的解决方案。你需要设定要求,即回答以下问题:(a)你的数字能有多大?(b) 这些数字一定是整数还是其他数字?(c) 如果所有的数字都是整数-它们可以是负数吗?很抱歉,我应该在问题中指定。您的示例中的特定数字
31415926535897932384626433832795
大于64位无符号整数可以容纳的值,因此
long
不够。它可以适应128位整数,但如果你考虑更高的数字,它将无济于事。我不确定你的符号是否正确-2*10^5表示20000?还是10万次方的2倍?如果是20000,那么为什么示例中的数字要比这个大得多?@KrishnnaSarrdah n只是数组的大小——首先是这个,
double arr[n]无效C++。C++中的数组必须在编译时知道它们的大小,而不是运行时。使用
std::vector arr(n)取而代之。其次,如果
n
很大,则使用
double-arr[n]
可能会耗尽堆栈内存。在声明数组时,不应该使用假C++——它不是有效的C++语法,只能导致比你认为的问题更多的问题。你可能想在建议编译器选项列表中添加<代码> -PoaTiTIC< /COD>标志。如果没有它,编译器将无法在编译时用
n
未知声明
double arr[n]
问题。
1
3
3
5
10
31415926535897933290036940242944