黑马程序员技术交流社区
标题:
SQLServer2005中Decimal与Flioat数据类型区别
[打印本页]
作者:
10642491
时间:
2011-10-30 06:56
标题:
SQLServer2005中Decimal与Flioat数据类型区别
请问SQLServer2005中Decimal与Flioat数据类型区别和具体用法,谢谢!
作者:
xiaobai198611
时间:
2011-10-30 14:39
decimal用于精确存储数值,float不能精确存储数值。
decimal数据类型最多可以存储38个数字,所有数字都可以放到小数点右边,decimal数据类型存储了一个精确的数字表达法;不存储值的近似值。
float数据类型被称为近似的数据类型。近似数据类型并不存储多数数字指定的精确值,它只存储这些值的最近似值。
作者:
DotNet菜鸟
时间:
2011-11-2 15:02
精度不一样
float是浮点数,不能指定小数位,精度很高。
decimal是精确数,可以指定精度,如decimal(18,2),一般货币,钱等数据要用decimal。
值得一提的是,float在CLR中对应的类型是Single,即使在语言(如C#)中声明为float变量,也会被编译器编译为Single
作者:
xiaobai198611
时间:
2011-11-2 17:08
本帖最后由 xiaobai198611 于 2011-11-2 17:34 编辑
float可以指定小数位的,至少在c#中小数位后最多可以指定7位了。不过float在c#中比较特殊了,写成小数点要末尾加一个F了。否则报错。这个也是区别float和double吧。
float的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;举例说明:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
float s = 1.55555579f;
Console.Write(s);
Console.Read();
}
}
}
复制代码
输出结果为:1.555556,小数位为六位。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
float s = 0.55555579f;
Console.Write(s);
Console.Read();
}
}
}
复制代码
输出结果为: 0.5555558,此时小数位为7位数。
而在sqlserver中float型的数据存储大小为8个字节,可精确到小数点后第15位数字。最多15位,小数点后位数一般在14-15位,这种数据类型的数据存储范围为从-1.79E 308~-2.23E-308,0和2.23E 308~1.79E 308。例如:0.555555555555578,小数点为15位。1.55555555555558,小数点为14位。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2