首页 > 解决方案 > 在 C# 中使用 int 数据类型添加大数的问题

问题描述

我正在尝试C#使用intdataType 添加五个大数字。但结果并不正确。为什么.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#.netintlong-integer

解决方案


由于性能 C#(不是 dotnet)和我知道的任何其他语言都使用 LARGEST 公分母进行操作。这是他们之间的共同点。不是结果,这将不得不被猜测。

所以,添加 2 个 int 数字是一个可能溢出的 int 操作。将 int 添加到 long 是一个很长的操作。添加两个 long 是一个 long 操作。

就这么简单。如果您知道会溢出,则将其中一种类型声明为更长。

现在,你可以施放——你也可以只声明它们,你知道的。

C# 短/长/int 文字格式?

向您展示所有足够的东西。

  • 1111 是一个整数
  • 1111UL 是一个无符号长整数。

因此,如果您告诉编译器在文字中使用正确的数据类型,则无需强制转换。


推荐阅读