C++ 在Qt中处理大数字
假设我有这个号码:123456789012345 并希望使用此半代码显示它: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位,
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级别伊森,对不起,我没听清你的谈话。你是说我们只有两倍精度的浮点数?