最近在将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位)

C#中int、long、float、double、decimal最大值最小值的更多相关文章

  1. Oracle数据库获取一行记录中某几个字段的最大值/最小值函数

    在数据库的开发过程中,我们可能会遇到这样的需求,获取一行记录中某几个字段的最大值或者是最小值,oracle给我们提供了解决这种需求的函数,如下所示:   greatest(col1, col2, co ...

  2. Java中基本数据类型byte,short,char,int,long,float,double 取值范围

    部分内容转自:java 彻底理解 byte char short int float long double 首先说byte: 这段是摘自jdk中 Byte.java中的源代码: /** * A co ...

  3. C# int uint long ulong byte sbyte float double decimal 范围,及类型!

    static void Main(string[] args) { Console.WriteLine(" byte {0,7:g}{1,32:g}{2,32:g}",typeof ...

  4. oracle 的 nubmer 类型与 C# 的 float double decimal 对应关系

    如果先有oracle 数据的情况下,怎么对应到C#中的类型. 在oralce 中 在dba_tab_columns表中, Data_type表示字段类型:Data_length表示字段类型的长度:Da ...

  5. float,double,decimal使用讨论

    注意:有效位:小数点前后的全部数字,不包括小数点在内 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64b ...

  6. MySQL类型float double decimal的区别

    语法 MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQ ...

  7. Arduino中数据类型转换 float/double转换为char 亲测好使,dtostrf()函数

    如何轻松玩转Arduino单片机,当我在进行数据转换的时候,遇到了问题,尝试了C语言和C++中的好多函数,都没有达到将float型数据转换为char型的目的.苦苦查阅资料后,终于找到了一个大神级函数! ...

  8. c语言中int long float double 等类型所占字节及输出表示(转)

    16位编译器 char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 doub ...

  9. Oracle中INT、FLOAT、NUMBER区别

    Oracle里的int等于number(长度,0) float也类似,number要定义小数部分的位数,而float不用定义后边小数有几位  因为NUMBER要确定长度,后边确定小数位. 所以,如果不 ...

随机推荐

  1. Axure 万年历(日期选择下拉文本框)

    百度网盘:http://pan.baidu.com/s/1c1ZjUPq 点击“图1”可呈现出“图2”的效果.(已实现模板化功能,不用去研究去为什么,直接使用即可)

  2. [转]URL汉字编码问题(及乱码解决)

    一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符号.比如,世界上有英文字母的网址 “http://www.ab ...

  3. <c:url>标签相关知识点

    <c:url>标签: value:指定路径!他会在路径前面自动添加项目名. <c:url value="/index.jsp"/>,他会输出/day14/i ...

  4. 基于源码编译openssl

    openssh依赖于openssl,由于ssl频繁曝出漏洞,牵扯到openssh.而自身也存在漏洞... 00.下载openssl https://www.openssl.org/source/ ht ...

  5. C++基础学习教程(六)----类编写的前情回想以及项目实战(1)

    在開始类的编写之前我们依旧须要回想整理一下前面所说的内容,(前面尽管是一个自己定义数据类型的实现过程,可是内容有点繁杂). 先看一段代码: /** @file calssStruct.cpp */ / ...

  6. JSP、Servlet中的相对路径和绝对路径 页面跳转问题

    转自:http://blog.csdn.net/wym19830218/article/details/5503533/ 1.JSP.Servlet中的相对路径和绝对路径 前提:假设你的Http地址为 ...

  7. lua api 官方文档 函数后面的方括号 说明 [-0, +0, –]

    本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段.c++/lua/windows逆向交流群:69148232 每一个lua api 函数结尾都给出了这样的说明例如: ...

  8. hduoj1073--Online Judge

    做道题,并没有太多的技巧,关键在与对Accepted,presented error 和wa的判断,第一步如果两者完全一样,那么很定是AC了 ,否则如果去掉多余换行,空格,制表后还有不同说明是数据 不 ...

  9. 【LeetCode】211. Add and Search Word - Data structure design

    Add and Search Word - Data structure design Design a data structure that supports the following two ...

  10. WCF Service中HttpContext.Current为null的解决办法

    1. 在hosting WCF的web.config中加入: <system.serviceModel> <serviceHostingEnvironment aspNetCompa ...