c++ - long long int 中的溢出
问题描述
在这种情况下,我面临一个溢出问题并得到输出7392445620511834112
,我想将 b 和 c 的 2 个大值相乘,并希望存储该值。
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
ll b=1000000000000000000;
ll c=2000000000000000000;
ll out=b*c;
cout<<out;
}
解决方案
如果你改变从long long
到unsigned long long
你可能会更接近一点。如果您不关心绝对精度,您可以在这里使用浮点类型,甚至float
足以以cout
正确显示输出的方式存储输出,但整数更大或更小,或者在以其他方式处理输出时可能想要使用double
或long double
获得更多的尺寸和精度。并且不要听所有的人告诉你你做错了,他们整天都在争论堆栈交换上的那些事情。你是怎么做的很好,否则它不会编译。
推荐阅读
- kotlin - 无法将 ArrayList 保存到 sharedpreferences
- javascript - 使用电子邮件链接登录会在 Web 应用程序上出现无效模式错误
- django - 如何从多表单按钮提交中删除 django 对象?
- c++ - 为 Debian 软件包指定较新的 C++ 标准库依赖项
- c++ - 运行时近似:为什么代码 1 运行得更快代码 2?
- node.js - 只接受使用 typescript 插入接口的属性
- symfony - 持久化实体时,Doctrine 会在我没有修改的不同实体上进行更新
- javascript - 有没有更好的方法来管理 UseEffect 反应钩子中的挂载,然后每次都声明一个局部变量?
- arrays - 应用程序脚本:根据数组的前 3 个最大值的位置返回字符组合的函数
- object - Katalon 在循环中使用对象