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位)
C#中int、long、float、double、decimal最大值最小值的更多相关文章
- Oracle数据库获取一行记录中某几个字段的最大值/最小值函数
在数据库的开发过程中,我们可能会遇到这样的需求,获取一行记录中某几个字段的最大值或者是最小值,oracle给我们提供了解决这种需求的函数,如下所示: greatest(col1, col2, co ...
- Java中基本数据类型byte,short,char,int,long,float,double 取值范围
部分内容转自:java 彻底理解 byte char short int float long double 首先说byte: 这段是摘自jdk中 Byte.java中的源代码: /** * A co ...
- 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 ...
- oracle 的 nubmer 类型与 C# 的 float double decimal 对应关系
如果先有oracle 数据的情况下,怎么对应到C#中的类型. 在oralce 中 在dba_tab_columns表中, Data_type表示字段类型:Data_length表示字段类型的长度:Da ...
- float,double,decimal使用讨论
注意:有效位:小数点前后的全部数字,不包括小数点在内 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64b ...
- MySQL类型float double decimal的区别
语法 MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQ ...
- Arduino中数据类型转换 float/double转换为char 亲测好使,dtostrf()函数
如何轻松玩转Arduino单片机,当我在进行数据转换的时候,遇到了问题,尝试了C语言和C++中的好多函数,都没有达到将float型数据转换为char型的目的.苦苦查阅资料后,终于找到了一个大神级函数! ...
- c语言中int long float double 等类型所占字节及输出表示(转)
16位编译器 char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 doub ...
- Oracle中INT、FLOAT、NUMBER区别
Oracle里的int等于number(长度,0) float也类似,number要定义小数部分的位数,而float不用定义后边小数有几位 因为NUMBER要确定长度,后边确定小数位. 所以,如果不 ...
随机推荐
- mysql在字符串中查找模式
查看以电话号码138开头的电话 select id, phone from user where phone like '138%'
- 使用eclipse生成文档(javadoc)主要有三种方法:
使用eclipse生成文档(javadoc)主要有三种方法: 1,在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步. 在Ja ...
- 加载ConversationListActivity以及延迟的使用
1. 加载会话列表分两步加载. 且第1步和第2步之间有些延迟,便于第1步的结果及时在ListView中显示出来. mHandler.postDelayed(new LoadThreadsExtra() ...
- Git提交代码报错Git push error:src refspec XXX matches more than one解决方案
Git提交代码push时,报错这个 error: src refspec master matches more than one. error: failed to push some refs t ...
- Netty-gRPC介绍和使用
转自:http://www.saily.top/2017/07/23/netty5/ gRPC Define your service using Protocol Buffers, a powerf ...
- linux shell 脚本攻略学习16--wc命令详解,tree命令详解
在文本处理的工作中,统计文件的行数,单词数和字符数非常有用.而对于开发人员本身来说,统计LOC(line of code ,代码行数)是一件重要的工作.linux中有什么命令可以帮助我们做统计呢?没错 ...
- HDU 2492 Ping pong (数状数组)
Ping pong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- windows下安装phpredis模块 (转)
1.下载: http://pecl.php.net/package/redis/2.2.7/windows 2.下载后 由于里面有两个模块分别是vc6,vc9编译的,我们需要知道我们的Php是vc6还 ...
- 【Hibernate】解析hibernate中的缓存
Hibernate中的缓存一共有三种,一级缓存.二级缓存.查询缓存.缓存除了使用Hibernate自带的缓存,还可以使用redis进行缓存,或是MongoDB进行缓存. 所使用的Demo: User. ...
- CentOS7.2安装python2.7.12
目前CentOS7.2自带的python版本是python2.7.5.由于yum这个软件需要系统自带的python工作. 如果冒然用自己安装的python替换掉系统自带的,可能造成yum不工作. 先安 ...