语言吧技术网欢迎您投稿,程序员的世界我懂你!=====>点此登录投搞
当前位置: 首页 >>ASP.NET >>C#基础 >>C#中int、long、float、double、decimal最大值最小值

C#中int、long、float、double、decimal最大值最小值

2019/3/12 10:30:38 0人评论 1502次 作者:admin

最近在将java上写的一个简单的表达式求值计算器移植到Windows Phone 8,java中double的精度问题是很明显的,解决办法是改用BigDecimal类。所以觉得C#中用double也是不太好的。C#中用作精度计算的一个数据类型是decimal,对应的类是Decimal。…

    最近在将java上写的一个简单的表达式求值计算器移植到Windows Phone 8,java中double的精度问题是很明显的,解决办法是改用BigDecimal类。所以觉得C#中用double也是不太好的。C#中用作精度计算的一个数据类型是decimal,对应的类是Decimal。

decimal的表示范围是

    (-7.9 x 1028 - 7.9 x 1028) / (100 - 28)

    (详见http://technet.microsoft.com/zh-cn/364x0z75.aspx)

    显而易见,decimal能表示的最大数比double要小得多,经查询一下是各数据类型能表示的最大值和最小值:

    int类型的最大值:  2147483647,最小值:  -2147483648

    uint类型的最大值:  4294967295,最小值:  0

    byte类型的最大值:  255,最小值:  0

    sbyte类型的最大值:  127,最小值:  -128

    short类型的最大值:  32767,最小值:  -32768

    ushort类型的最大值:  65535,最小值:  0

    long类型的最大值:  9223372036854775807,最小值:  -9223372036854775808

    ulong类型的最大值:  18446744073709551615,最小值:  0

    float类型的最大值:  3.402823E+38,最小值:  -3.402823E+38

    double类型的最大值:  1.79769313486232E+308,最小值:  -1.79769313486232E+308

    decimal类型的最大值:  79228162514264337593543950335,最小值:  -79228162514264337593543950335

    下面的代码说明了double和decimal表达精度能力的不同:

    static void Main(string[] args)

        {

            String str1 = Console.ReadLine();

            String str2 = Console.ReadLine();

            double i = double.Parse(str1);

            double j = double.Parse(str2);

            Console.WriteLine("i * j = " + i * j);

            decimal k = decimal.Parse(str1);

            decimal l = decimal.Parse(str2);

            Console.WriteLine("k * l = " + k * l);

        }

输入:

    0.333333333333333333333333333333333333333333

    3

运行结果:

    1

    0.9999999999999999999999999999 (小数点后28位)


CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-15 http://www.yuyanba.com
欢迎【康乃狄克州 】的朋友
内容与素材部分来源于网络,如有侵权请告知删除
分享按钮