c# - 在 C# 中使用 int 数据类型添加大数的问题
问题描述
我正在尝试C#
使用int
dataType 添加五个大数字。但结果并不正确。为什么.net
强迫我强制转换long
并执行添加以获得正确的结果。
using System;
public class Program
{
public static void Main()
{
int i1= 256741038,i2= 623958417,i3= 467905213 ,i4= 714532089,i5=938071625;
long l1= 256741038,l2= 623958417,l3= 467905213 ,l4= 714532089,l5=938071625;
long result1=i2+i3+i4+i5;
long result2=l2+l3+l4+l5;
long result3=(long)l2+(long)l3+(long)l4+(long)l5;
Console.WriteLine(result1);
Console.WriteLine(result2);
Console.WriteLine(result3);
}
}
解决方案
由于性能 C#(不是 dotnet)和我知道的任何其他语言都使用 LARGEST 公分母进行操作。这是他们之间的共同点。不是结果,这将不得不被猜测。
所以,添加 2 个 int 数字是一个可能溢出的 int 操作。将 int 添加到 long 是一个很长的操作。添加两个 long 是一个 long 操作。
就这么简单。如果您知道会溢出,则将其中一种类型声明为更长。
现在,你可以施放——你也可以只声明它们,你知道的。
向您展示所有足够的东西。
- 1111 是一个整数
- 1111UL 是一个无符号长整数。
因此,如果您告诉编译器在文字中使用正确的数据类型,则无需强制转换。
推荐阅读
- python-3.x - 如何使用键名将dict添加到数据框?
- reactjs - 错误:元素类型无效:需要字符串或函数(对于复合组件)。检查“SelectProfileContainer”的渲染方法
- flutter - Flutter Riverpod StateNotifier 在页面构建时加载数据
- javascript - 我们可以在服务工作者之间重新渲染页面吗
- pandas - 从pandas DataFrame列标题中获取超过1000列的列表
- python - 使用 Selenium(Python 3)点击后获取数据
- c# - WPF 中的 ListView 子项
- angular - Ag-grid 隐藏过滤列
- python - 创建唯一整数
- python - 使用 Python3 在 macOS 上使用终端获取 USB 记忆棒的路径