存储数字的最大数据类型

问题描述 投票:2回答:4

我在C#Winform应用程序中制作科学计算器。因为我使用double来存储从函数e ^ x的计算中检索到的答案。但是数据类型double有一些限制,如果它超过它显示溢出相关的错误。那么你能告诉我在C#中存储数字的最大数据类型是什么。

示例:100!

c# .net numbers double
4个回答
4
投票

double是C#中最大的浮点精度数据类型。你有BigInteger,但不是BigFloatBigDouble

然而,在Base Class Library on CodePlex有一个BigRational的实现,实际上是两个BigIntegers:

从那里网站:

BigRational构建在.NET Framework 4中引入的BigInteger上,以创建任意精度的有理数类型。有理数是两个整数之间的比率,在这个实现中,BigIntegers用于分子和分母。



0
投票

您应该考虑使用System.Numerics.BigInteger数据类型。它代表一个任意大的有符号整数。它们几乎没有任何限制,不像你必须观察到.Net框架中可用的各种其他数字数据类型。你可以阅读更多关于它here

要使用此结构,您需要在C#项目中引用System.Numerics.dll,并在代码文件的顶部包含以下命名空间:

using System.Numerics;

你可以通过this帖子了解如何添加所需的参考,以防你卡在某处。

下面的代码正常工作:

var aVeryVeryHugeNumber = System.Numerics.BigInteger.Parse("31415926535897932384626433832795");

如果你尝试解析代表一个数字的巨大字符串,即使用ulong.Parse,它会导致System.OverflowException以及以下消息:

对于UInt64,值太大或太小。


-2
投票
static void Main(string[] args)
    {
        Console.WriteLine("Geef een getal in?");
        double getal1 = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Geef een tweede getal in?");
        double getal2 = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Geef een derde getal in?");
        double getal3 = Convert.ToDouble(Console.ReadLine());

        if (getal1 > getal2 && getal1  > getal3)
        {
            Console.WriteLine(getal1 + "is het grootste getal");

        }
        if (getal2 > getal1 && getal2 > getal3) 
        {
            Console.WriteLine(getal2 + "is het grootste getal");
        }
        if( getal3 > getal2 && getal3 > getal1 )
        {
            Console.WriteLine(getal3 + "is het grootste getal");
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.