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要确定长度,后边确定小数位. 所以,如果不 ...
随机推荐
- SQL Manager Lite可视化工具部分中英对照
.Refresh //刷新表数据 .compile,//提交数据. .connect to host //链接到服务器 .disconnect from all databases //断开链接 . ...
- java 第一个java程序
public class Test16{ public static void main( String args[] ) { System.out.println ("welcome to ...
- js和html插件集
1.UEditor编辑器 UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 2.echar ...
- Netstat命令详解(windows下)
Netstat 用于显示与IP .TCP .UDP 和ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况. 如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,T ...
- 抗衡Win Linux全凭这些桌面环境
2012年01月25日 元老级桌面环境KDE Linux操作系统最早使用在服务器上,而桌面操作系统并不是Linux的重点突围.但是,近几年Linux桌面操作系统有崛起的趋势,抢夺了部分桌面操作 ...
- ios实例开发精品文章推荐(8.12)11个处理触摸事件和多点触摸的JS库
11个处理触摸事件和多点触摸的JS库 触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的Web应用,我们需要借助浏览器的触摸事件来实现. ...
- lamp虚拟主机的常用配制选项
<VirtualHost *:80> ServerAdmin m.koobird.com DocumentRoot "/var/www/html/xinyou&quo ...
- Windows安装ElasticSearch-2.2.0
1.下载ElasticSearch-2.2.0安装包 https://www.elastic.co/downloads/elasticsearch 2.解压缩并安装:CMD窗口运行 elasticse ...
- MySQL-通用查询日志
记录了所有对mysql数据库服务器请求的信息,无论这些请求是否得到了正确的执行. mysqld向通用查询日志中写信息是按照收到客户端的命令的顺序进行记录,而不是按照执行的顺序. server重 ...
- Oracle中文乱码解决办法总结
AMERICAN_AMERICA.WE8ISO8859P1,这个字符编码是西欧字符编码,对应于.Net的就是iso-8859-1字符编码,所以只需要改到系统的默认字符编码就行了. 解决方法: (1) ...