zoukankan      html  css  js  c++  java
  • C#中int、long、float、double、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位)
    ————————————————
    版权声明:本文为CSDN博主「wf_wenli」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wf_wenli/article/details/8820555

  • 相关阅读:
    字符串时间+8个小时
    Django的field字段与参数介绍
    celery+Django
    二分查找
    排序算法
    socket套接字
    网络七层协议简述
    ORM操作mysql数据库多表的增删改查
    ORM操作mysql数据库
    Django框架静态文件配置和URL解析
  • 原文地址:https://www.cnblogs.com/sunny3158/p/11805785.html
Copyright © 2011-2022 走看看