Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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++ 在Qt中处理大数字_C++_Qt - Fatal编程技术网

C++ 在Qt中处理大数字

C++ 在Qt中处理大数字,c++,qt,C++,Qt,假设我有这个号码:123456789012345 并希望使用此半代码显示它: QString s; QTextStream ss(&s); int n = 123456789012345; ss << n; lineEdit -> setText(s); QString; QTextStream-ss&s; int n=123456789012345; ss setText(s);; 它显示的数字不正确(负数),最多只能显示10位数字 如何使其正确地工作到15位,

假设我有这个号码:123456789012345

并希望使用此半代码显示它:

QString s;
QTextStream ss(&s);

int n = 123456789012345;
ss << n;
lineEdit -> setText(s);
QString;
QTextStream-ss&s;
int n=123456789012345;
ss setText(s);;
它显示的数字不正确(负数),最多只能显示10位数字


如何使其正确地工作到15位,请?

只需指定一种能够容纳这些数字的数据类型,如
unsigned long

#include <iostream>

using namespace std;

int main() {
    unsigned long long n = 123456789012345;
 // ^^^^^^^^^^^^^^^^^^
    cout << n;
}
#包括
使用名称空间std;
int main(){
无符号长n=123456789012345;
// ^^^^^^^^^^^^^^^^^^

不能只指定一个能够保存这些数字的数据类型,如
unsigned long long

#include <iostream>

using namespace std;

int main() {
    unsigned long long n = 123456789012345;
 // ^^^^^^^^^^^^^^^^^^
    cout << n;
}
#包括
使用名称空间std;
int main(){
无符号长n=123456789012345;
// ^^^^^^^^^^^^^^^^^^

cout如前所述,
int
太小,无法容纳这么多数字的值。我个人更喜欢用我想要的显式表示,因此我会使用
quint64
uint64\u t
。您也不需要文本流来将数字放入字符串中,这有一个函数:

quint64 n = 123456789012345;
lineEdit->setText(QString::number(n));

如前所述,
int
太小,无法容纳这么多数字的值。我个人更喜欢显式地表达我想要的内容,因此我会使用
quint64
uint64\u t
。您也不需要文本流来将数字放入字符串中,这有一个函数:

quint64 n = 123456789012345;
lineEdit->setText(QString::number(n));


使用较大的数据类型。
123456789012345
大于可放入
int
的最大值。如果值仅为正值,则使用
long
unsigned long
。注意,大多数类型的定义是“至少”。这意味着所有的整数类型都可以是相同的大小:至少64位。很有趣,嗯?还可以看看是否需要担保。非常感谢。很抱歉,我对Qt很陌生。:d这个问题与Qt完全无关。从Qt 5.4开始,您可以在.pro文件中指定CONFIG+=c++14。然后,您可以用更可读的w带数字分隔符的ay。int n=123'456'789;等。使用较大的数据类型。
12345678012345
大于可放入
int
的最大值。如果值仅为正,则使用
long
无符号long
。注意大多数类型都是按照“至少”定义的。这意味着所有的整数类型都可以是相同的大小:至少64位。很有趣,嗯?还可以看看是否需要担保。非常感谢。很抱歉,我对Qt很陌生。:d这个问题与Qt完全无关。从Qt 5.4开始,您可以在.pro文件中指定CONFIG+=c++14。然后,您可以用更可读的w带数字分隔符的“是”。int n=123'456'789;等。谢谢你的解决方案。请将你的答案格式更改为Qt,这样我就可以给它投正确的答案票了。@franky我希望这已经足够相关了。谢谢你的解决方案。+1。请将你的答案格式更改为Qt,这样我就可以给它投正确的答案票了。@franky我希望如此这已经足够相关了。请问浮点变量是什么?例如,我想要一个double来获得最高的精度,比如:0。00000000012345@franky-它是同一个函数,对所有数字类型都重载。只需传递一个double即可。例如,您可以这样说:
quint64 d=0.00000000012345;lInEdit->setText(QString::number(d))
并且它将以同样的精度显示在lineEdit中?@franky-它必须是一个
双精度
而不是
qint
-int是一个整数,一个整数。此外,起始点编号必须能够准确地表示该编号,这并不总是可能的,因为IEEE reals有一个离散的prec级别ision。对不起,我没有听清你的谈话。你的意思是我们只有双精度浮点数吗?请对浮点数变量做些什么?例如,我想要一个双精度浮点数来获得最高精度,如:0。00000000012345@franky-它是相同的函数,对于所有数字类型都重载。只需传递一个dou例如,你说我可以这样使用它:
quit64d=0.00000000012345;lineEdit->setText(QString::number(d))
并且它将以同样的精度显示在lineEdit中?@franky-它必须是一个
双精度
而不是
qint
-int是一个整数,一个整数。此外,起始点编号必须能够准确地表示该编号,这并不总是可能的,因为IEEE reals有一个离散的prec级别伊森,对不起,我没听清你的谈话。你是说我们只有两倍精度的浮点数?