行使SqlServer中的float类型时意识的标题,及应用思
分类:数据库

 
摘要:
下文陈述使用round sql函数,对数值型数据开展舍入操作
实施意况:sqlserver 二零一零

numeric 和 decimal 数据类型的默认最大精度值是 38。在 Transact-SQL 中,numeric 与 decimal 数据类型在功能上等效。

decimal(numeric ) 同义,用于精确存储数值
decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。

NUMERIC(P,S) P的默认值是:38 S的默认值是:-84~127
numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数,例如numeric(5,2)是总位数为5,小数点后为2位的数,也就是说这个字段的整数位最大是3位。

正文转自:

转自:

行使SqlServer中的float类型时意识的标题,及应用思虑。decimal 数据类型最多可存储 38 个数字,全数数字都能够放到小数点的入手。decimal 数据类型存款和储蓄了二个正确(准确卡塔尔的数字表明法;不存款和储蓄值的相似值。

在做项目中,使用了float类型来定义一些列,如:Price,不过发掘了超多主题素材
1、当班值日的位数大于6位是float型再转varchar型的时候会造成科学技艺法突显
    当时只可以将float型转变到numeric型,再转变来varchar
2、float型变量在存入值时,有时值得大小会发出变动。那些场合爆发在对报价保存时,如:保存多少个3.8,但到了数据库中形成了3.80001124或3.79998999等
在SqlServer的赞助中是如此描述float类型的:用于表示浮点数字数据的近乎数字数据类型。浮点数据为相近值;并不是数据类型范围内的兼具数据都能可相信地球表面示。
于是后来以此项目应当要慎用

 


定义 decimal 的列、变量和参数的三种天性如下:

 

在 Microsoft® SQL Server™ 中,每种列、局部变量、表明式和参数都有三个连锁的数据类型,那是钦点对象可具备的数据类型(整型、字符、money 等等卡塔尔国的特点。SQL Server 提供系统数据类型集,定义了可与 SQL Server 一齐行使的具有数据类型。上面列出体系提供的数据类型集。

近来收下顾客供给,需对数值型数据,无论后边数据多少,直接举办舍入操作,搜索枯肠,终于意识了round函数能够知足此操作。

round函数舍入特性介绍:
round语法介绍:

  • p   小数点左边和左边数字之和,不满含小数点。如 123.45,则 p=5,s=2。

评论

能够定义客商定义的数据类型,其是系统提供的数据类型的别称。有关客户定义的数据类型的更加多音讯,请参见 sp_addtype 和开创顾客定义的数据类型。

round(数据表明式,长度[,操作方式])

参数表达:
数码表达式:
抽出二个tinyint、int、bigint、decimal、numeric、money、smallmoney、float、real
长度:
此参数须为tinyint int smallint类型
round函数舍入的精度
操作方法:
此参数须为tinyint int smallint类型

点名精度或对象能够决定的数字个数。

#1楼 218.69.6.* 2007-08-05 16:09 William Wang [未注册顾客] 澳门新萄京 1

也许利用decimal(numeric卡塔尔比较好

澳门新萄京 2澳门新萄京 3 澳门新萄京 4  澳门新萄京 5澳门新萄京 6 澳门新萄京 7  澳门新萄京 8澳门新萄京 9 澳门新萄京 10  澳门新萄京 11澳门新萄京 12 澳门新萄京 13  澳门新萄京 14澳门新萄京 15 澳门新萄京 16  澳门新萄京 17澳门新萄京 18 澳门新萄京 19  澳门新萄京 20澳门新萄京 21 澳门新萄京 22  澳门新萄京 23澳门新萄京 24 澳门新萄京 25  澳门新萄京 26澳门新萄京 27 澳门新萄京 28  

请问float类型怎样设置小数位数?**

**在客商端(C#),如若存入一个带小数位的小数,如:Insert   into   (田野(field)A)   values   (2.4);当中,田野同志A是float类型.存入数据库后,数据有希望成为2.400000照旧2.4000001依然2.399999999.晕.   
    
  请问怎样设置.

=========================================================================

那无妨.展现时调换一下.   
    
  select   cast(fieldA   as   decimal(18,1))

=========================================================================

decimal

=========================================================================

当七个有着区别数据类型、排序法则、精度、小数位数或长度的表明式通过运算符进行整合时:

缺省值:为0,倘若输入任何值,则将截断“数据表明式”

重返值表明:
tinyint返回int
int 返回int
bigint 返回bigint
decimal numberic 返回decimal numberic
money smallmoney返回money

  • s

用   decimal   類型   或   用   convert   轉換

澳门新萄京 29澳门新萄京 30 澳门新萄京 31  澳门新萄京 32澳门新萄京 33 澳门新萄京 34  澳门新萄京 35澳门新萄京 36 澳门新萄京 37  澳门新萄京 38澳门新萄京 39 澳门新萄京 40  澳门新萄京 41澳门新萄京 42 澳门新萄京 43  澳门新萄京 44澳门新萄京 45 澳门新萄京 46  澳门新萄京 47澳门新萄京 48 澳门新萄京 49  澳门新萄京 50澳门新萄京 51 澳门新萄京 52  澳门新萄京 53澳门新萄京 54 澳门新萄京 55  

SQL Server 2002中的float类型呈现多少人小数 

SQL Server 2000中:

如果是数据类型Float 11.8,它就默许以11.800000000000001仓库储存了,展现的时候看起来蛮不爽的,偶只想要4位小数,找了累累材料,把float型用smallmoney型以为上就能够了。

浮点数据类型用于存款和储蓄十进制小数。浮点数值的多寡SQL Server 中接受上舍入(Round up 或称为只入不舍卡塔尔方式举行仓储。所谓上舍入是指,当(且仅当卡塔 尔(英语:State of Qatar)要舍入的数是八个非零数时,对其保存数字有的的最低有效位上的数值加1 ,并张开供给的进位。若多个数是上舍入数,其相对值不会压缩。如:对3.14159265358979 各自开展2 位和12个人舍入,结果为3.15 和3.141592653590。

货币数据表示正的或负的货币值。在 Microsoft SQL Server 二〇〇〇 中应用 money 和 smallmoney 数据类型存款和储蓄货币数据。货币数据存款和储蓄的正确度为二个人小数。(正好达到自己的须求:呈现四为小数就OK了卡塔 尔(英语:State of Qatar)

Monetary data represents positive or negative amounts of money. In Microsoft® SQL Server™ 2000, monetary data is stored using the money and smallmoney data types. Monetary data can be stored to an accuracy of four decimal places. Use thesmallmoney data type to store values in the range from -214,748.3648 through 214,748.3647 (requires 4 bytes to store a value).

澳门新萄京 56澳门新萄京 57 澳门新萄京 58  澳门新萄京 59澳门新萄京 60 澳门新萄京 61  澳门新萄京 62澳门新萄京 63 澳门新萄京 64  澳门新萄京 65澳门新萄京 66 澳门新萄京 67  澳门新萄京 68澳门新萄京 69 澳门新萄京 70  澳门新萄京 71澳门新萄京 72 澳门新萄京 73  澳门新萄京 74澳门新萄京 75 澳门新萄京 76  澳门新萄京 77澳门新萄京 78 澳门新萄京 79  澳门新萄京 80澳门新萄京 81 澳门新萄京 82  

SQL Server 中Float类型 如何转产生 Varchar类型 ?

澳门新萄京,方法 如下 :

float转化成varchar类型

select convert(varchar(8000),cast(convert(float,'12345678900') as decimal))

select str(convert(float,'123456789000'),len(convert(float,'123456789000')))

select convert(varchar(8000),cast(convert(float,'12345678900') as decimal))

STR ( float_expression [ , length [ ,    ] ] )

备注
举例为 ST奥迪Q5 提供 length 和 decimal 参数值,则这么些值应该是正数。在私下认可景况下或小数参数为 0 时,数字舍入为整数。钦定的尺寸应超过或等于小数点前面包车型地铁有的加上数字符号(如若有卡塔 尔(阿拉伯语:قطر‎的尺寸。短的 float_expression 在钦命长度内右对齐,长的 float_expression 则截断为钦命的小数位数。比如,ST奔驰G级(12,10) 输出的结果是 12。它在结果集内右对齐。而 ST奥迪Q5(1223,2) 则将结果集截断为 **。能够嵌套字符串函数。

注意: 
若要调换为 Unicode 数据,请在 CONVERT 或 CAST 转换函数内接收 ST讴歌MDX。

 

参数
float_expression
带小数点的相符数字 (float) 数据类型的表明式。

length
总参谋长度。它回顾小数点、符号、数字甚至空格。暗中同意值为 10。

decimal
小数点后的位数。decimal 必需低于或等于 16。假设 decimal 大于 16,则会截断结果,使其有限支撑为小数点后具有十多少人。

归来类型
char

 澳门新萄京 83澳门新萄京 84 澳门新萄京 85  澳门新萄京 86澳门新萄京 87 澳门新萄京 88  澳门新萄京 89澳门新萄京 90 澳门新萄京 91  澳门新萄京 92澳门新萄京 93 澳门新萄京 94  澳门新萄京 95澳门新萄京 96 澳门新萄京 97  澳门新萄京 98澳门新萄京 99 澳门新萄京 100  澳门新萄京 101澳门新萄京 102 澳门新萄京 103  澳门新萄京 104澳门新萄京 105 澳门新萄京 106  澳门新萄京 107澳门新萄京 108 澳门新萄京 109  

 

**SQL Server 二零零三 小数类型-使用 decimal、float 和 real 数据

**

decimal 数据类型最多可存款和储蓄 三十六个数字,全体数字都能够放到小数点的右侧。decimal 数据类型存款和储蓄了二个分明的数字表达法;没有存储值的相仿值。

概念 decimal 的列、变量和参数的三种性情如下:

  • p

    点名精度或对象能够决定的数字个数。

  • s

    点名可放置小数点左边的小数位数或数字个数。

    p 和 s 必得信守以下准则:0 <= s <= p <= 38。

numeric 和 decimal 数据类型的私下认可最大精度值是 38。在 Transact-SQL 中,numeric 与 decimal 数据类型在功效上等效。

当数据值必定要坚决守住钦赐精确存款和储蓄时,能够用带有小数的 decimal 数据类型来囤积数字。

关于数学生运动算如何影响结果的精度和小数位数的信息,请参见精度、小数位数和长度。

  1. 通过将数据类型的优先顺序规则应用到输入表明式的数据类型来规定所得值的数据类型。有关越来越多消息,请参见数据类型的优先顺序。

  2. 万黄金时代结果数据类型为 charvarchartextncharnvarcharntext,则结果值的排序法规由排序法规的预先顺序准绳决定。有关更加的多信息,请参见排序法规的事先顺序。

  3. 结果的精度、小数位数及长度决计于输入表达式的精度、小数位数及长度。有关更加多消息,请参见精度、小数位数和尺寸。

float real 返回float

<span style="color:red;">
注意事项:
当"长度"为正数时,则将小数点后舍入的位数
当"长度"为负数时,则将小数点前舍入的位数
</span>
 -----------------------------------------------------
round应用举例:

SELECT ROUND(8989.3652, 2), --小数位后保留2位,四舍五入
ROUND(8989.3652, -2),--小数位前舍入2位,四舍五入
---小数位全部舍入,四舍五入
ROUND(8956.34, 0),ROUND(8956.65, 0),ROUND(8956.25, 0), 
---截断数据舍入位置后的数据
ROUND(16081.83,0,-2), ROUND(16081.83,0,1), ROUND(16081.83,0,5),
ROUND(16081.835,2,8), ROUND(16081.836,-2,6), ROUND(16081.83,-2,7)
go

---例:sql取消四舍五入方法分享
---丢失小数位后两位,并不进行四舍五入操作
select round(8989.999,2,9)

 

点名可停放小数点左侧的小数位数或数字个数。

使用 float 和 real 数据

float 和 real 数据类型被堪当相像的数据类型。在贴近数字数据类型方面,float 和 real 数据的施用遵从 IEEE 754 标准。

看似数字数据类型并不存款和储蓄为大多数数字钦命的确切值,它们只积累这么些值的最相像值。在众多应用程序中,钦赐值与存款和储蓄值之间的微小不一样并不举世瞩目。但神跡这几个出入也值得引起注意。由于 float 和 real 数据类型的这种相通性,当必要精确的数字状态时,比如在财务应用程序中,在这里个必要舍入的操作中,或在等值核查的操作中,就不利用那个数据类型。这个时候将在用 integer、decimal、money 或 smallmone 数据类型。

在 WHERE 子句搜索条件中(非常是 = 和 <> 运算符卡塔 尔(英语:State of Qatar),应幸免选拔 float 或 real 列。最棒限定使用 float 和 real 列做 > 或 < 的可比。

IEEE 754 规格提供了三种舍入格局:舍入到最相近的值、上舍入、下舍入和舍入到零。Microsoft® SQL Server™ 使用上舍入。全部的数值必得正确到规定的精度,但会生出轻微的浮点值变化。因为浮点数字的二进制表示法能够运用比很多法定舍入准绳中的任性一条,由此大家不容许可信赖地量化二个浮点值。

 

原稿地址: 

SQL Server 为 SQL-92 宽容性提供了数据类型同义词。有关更加多新闻,请参见数据类型同义词。

p 和 s 必须固守以下准绳:0 <= s <= p <= 38。

确切数字

numeric 和 decimal 数据类型的暗中同意最大精度值是 38。在 Transact-SQL 中,numeric 与 decimal 数据类型在效果与利益上等效。

整数

bigint

从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(全数数字卡塔尔。

int

从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(全体数字卡塔 尔(英语:State of Qatar)。

smallint

从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的板寸数据。

tinyint

从 0 到 255 的整数数据。

当数据值应当要鲁人持竿钦点准确存款和储蓄时,能够用包蕴小数的 decimal 数据类型来存款和储蓄数字。

bit

bit

1 或 0 的板寸数据。

float 和 real 数据

decimal 和 numeric

decimal

从 -10^38 1 到 10^38 –1 的原则性精度和小数位的数字数据。

numeric

功能上等同于 decimal

float 和 real 数据类型被称作相同的数据类型。在雷同数字数据类型方面,float 和 real 数据的施用坚决守住 IEEE 754 标准。

money 和 smallmoney

money

货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 ( 922,337,203,685,477.5807) 之间,正确到货币单位的千分之十。

smallmoney

通货数据值介于 -214,748.3648 与 214,748.3647 之间,准确到货币单位的千分之十。

好像数字数据类型并不存储为大多数数字内定的确切值,它们只积攒那几个值的最相通值。在众多应用程序中,钦点值与存款和储蓄值之间的微薄分化并不引人瞩目。但有的时候那么些差别也值得引起注意。由于 float 和 real 数据类型的这种相近性,当必要准确的数字状态时,比如在财务应用程序中,在那多少个急需舍入的操作中,或在等值核没有错操作中,就不行使那个数据类型。那个时候将要用 integer、decimal、money 或 smallmone 数据类型。

恍如数字

float

从 -1.79E 308 到 1.79E 308 的浮点精度数字。

real

从 -3.40E 38 到 3.40E 38 的浮点精度数字。

在 WHERE 子句寻找条件中(特别是 = 和 <> 运算符卡塔 尔(阿拉伯语:قطر‎,应制止采取 float 或 real 列。最棒约束使用 float 和 real 列做 >或 < 的比较。

datetime 和 smalldatetime

datetime

从 1753 年 1 月 1 日到 9999 年 12 月 二18日的日子和岁月数额,正确到百分之三秒(或 3.33 飞秒卡塔尔国。

smalldatetime

从 1901 年 1 月 1 日到 2079 年 6 月 6 日的日子和岁月数额,正确到分钟。

IEEE 754 规格提供了多种舍入格局:舍入到最周围的值、上舍入、下舍入和舍入到零。Microsoft® SQL Server™ 使用上舍入。全数的数值必得标准到规定的精度,但会时有发生轻微的浮点值变化。因为浮点数字的二进制表示法能够行使比很多官方舍入准则中的大肆一条,因而大家不容许可信赖地量化八个浮点值。

字符串

char

恒久长度的非 Unicode 字符数量,最大尺寸为 8,000 个字符。

varchar

可变长度的非 Unicode 数据,最长为 8,000 个字符。

text

可变长度的非 Unicode 数据,最大尺寸为 2^31 - 1 (2,147,483,647) 个字符。

转换 decimal 和 numeric 数据

Unicode 字符串

nchar

恒久长度的 Unicode 数据,最大尺寸为 4,000 个字符。

nvarchar

可变长度 Unicode 数据,其最大尺寸为 4,000 字符。sysname 是系统提供顾客定义的数据类型,在职能上等同于 nvarchar(128),用于援用数据库对象名。

ntext

可变长度 Unicode 数据,其最大尺寸为 2^30 - 1 (1,073,741,823) 个字符。

对于 decimal 和 numeric 数据类型,Microsoft® SQL Server™ 将精度和小数位数的各样特定组合看作是例外的数据类型。比方,decimal(5,5) 和 decimal(5,0) 被看成不相同的数据类型。(因而在编存款和储蓄进度个中使用的变量接收Real 或 Float,而不采取decimal类型)

二进制字符串

binary

一定长度的二进制数据,其最大尺寸为 8,000 个字节。

varbinary

可变长度的二进制数据,其最大尺寸为 8,000 个字节。

image

可变长度的二进制数据,其最大尺寸为 2^31 - 1 (2,147,483,647) 个字节。

在 Transact-SQL 语句中,带有小数点的常量自动调换为 numeric 数据值,且自然使用最小的精度和小数位数。举个例子,常量12.345 被撤换为 numeric 值,其精度为 5,小数位为 3。

别的数据类型

cursor

游标的引用。

sql_variant

大器晚成种存款和储蓄 SQL Server 辅助的各类数据类型(textntexttimestampsql_variant 除此之外卡塔 尔(英语:State of Qatar)值的数据类型。

table

大器晚成种新鲜的数据类型,存款和储蓄供之后管理的结果集。

timestamp

数据库范围的有一无二数字,每便换代行时也进展立异。

uniqueidentifier

全局唯风度翩翩标记符 (GUID)。

 decimal 或 numeric  float 或 real 转移会变成精度损失。从 intsmallinttinyintfloatrealmoney 或 smallmoney 向 decimal 或 numeric 调换会形成溢出。

optimize SQLSEKoleosVEEnclave 3数据类型的考虑

分类:SQLSERVER

l  decimal和numeric中尽量接纳decimal,numeric只是为着向后拾叁分。

l  bigint,int,smallint,tinyint中

第意气风发int,空间杀绝合适,运算速度快;(2147,...,...2个多亿)

若果那么些在意空间的话,思谋tinyint

相当大应用处合,思考bigint

l money,smallmoney

尽大概思谋用decimal替代,原因:质量稍微好有的;相对别的数据库包容性好。

money的功利是能够用到一点货币运算函数。

float类型尽量少用,品质倒霉,精度不高,平日只用于科学计算。

l  char,varchar,nchar/nvarchar

char质量好;varchar节省空中;选拔形式:12个字节以上的用varchar

n类型的攻克空间大,质量低,借使不酌量存汉语或中亚文字则尽量制止使用。

越是向类似工号的字段更不要采用n类型,首先它不会存入普通话,其次它大概作为目录,那时候对质量的影响就越来越大。

l  text/image  思量到保险方便、功用甚至程序开拓的方便性,最棒不用,即不将其存入数据库中;选取varchar指向其相应的囤积路线。

1)char、varchar、text和nchar、nvarchar、ntext 

  char和varchar的长短都在1到8000里边,它们的界别在于char是定长字符数据,而varchar是变长字符数据。所谓定长正是长度固定的,当输入的多寡长度未达到钦命的长度时将电动以匈牙利(Magyarország卡塔尔国语空格在其后边填充,使长度到达相应的长度;而变长字符数据则不会以空格填充。text存储可变长度的非Unicode数据,最大尺寸为2^31-1(2,147,483,647)个字符。   

  后边二种数据类型和后边的对照,从名称上看只是多了个假名"n",它表示存款和储蓄的是Unicode数据类型的字符。写进程序的朋友对Unicode应该很理解。字符中,克罗地亚共和国(Republic of Croatia卡塔尔国语字符只需求一个字节存款和储蓄就足足了,但汉字众多,要求多少个字节存款和储蓄,马耳他语与汉字同期设不时便于引致零乱,Unicode字符集便是为了化解字符集这种不合作的问题而发出的,它具有的字符都用七个字节表示,即意大利语字符也是用多个字节表示。nchar、nvarchar的长度是在1到4000之内。和char、varchar相比:nchar、nvarchar则最多存款和储蓄4000个字符,无论是捷克语仍然汉字;而char、varchar最多能存款和储蓄8000个越南语,4000个汉字。能够见到使用nchar、nvarchar数据类型时毫无忧虑输入的字符是斯拉维尼亚语依然汉字,较为便利,但在积存日文时数量上稍加损失。  

  (2)datetime和smalldatetime 

  datetime:从1753年11月1日到9999年4月八日的日子和岁月数额,精确到百分之三秒。 

  smalldatetime:从1901年二月1日到2079年三月6日的日子和岁月数额,正确到秒钟。   

  (3)bitint、int、smallint、tinyint和bit 

  bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。 

  int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。 

  smallint:从-2^15(-32,768)到2^15-1(32,767)的卡尺头数据。 

  tinyint:从0到255的整数数据。 

  bit:1或0的整数数据。   

  (4)decimal和numeric 

  那三种数据类型是千篇意气风发律的。都有几个参数:p(精度卡塔 尔(英语:State of Qatar)和s(小数位数卡塔尔。p内定小数点左边和左手能够积累的十进制数字的最大个数,p必得是从 1到38之内的值。s内定小数点右边能够积存的十进制数字的最大个数,s必得是从0到p之间的值,私下认可小数位数是0。   

  (5)float和real 

  float:从-1.79^308到1.79^308里头的浮点数字数据。 

  real:从-3.40^38到3.40^38里边的浮点数字数据。在SQL Server中,real的同义词为float(24)。

暗许景况下,在将数字调换为十分低精度和小数位数的 decimal 或 numeric 值时,SQL Server 使用舍入法。但是,假诺 SET A奇骏ITHABORT 选项为 ON,当发生溢出时,SQL Server 会现身谬误。若仅损失精度和小数位数,则不会发出错误。

本文由澳门新萄京发布于数据库,转载请注明出处:行使SqlServer中的float类型时意识的标题,及应用思

上一篇:澳门新萄京多行编辑,EasyuiDatagird绑定分页 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 行使SqlServer中的float类型时意识的标题,及应用思
    行使SqlServer中的float类型时意识的标题,及应用思
      摘要: 下文陈述使用roundsql函数,对数值型数据开展舍入操作 实施意况:sqlserver 二零一零 numeric 和 decimal 数据类型的默认最大精度值是 38。在 Transact-SQL 中,
  • SQL函数大全,常用系统函数
    SQL函数大全,常用系统函数
    摘要:下文收集了sqlserver函数教程,为每一个函数都进行了相关举例说明, 系统函数用于获取有关计算机系统、用户、数据库和数据库对象的信息。系统函
  • SQL内外左右交叉连接,交叉连接
    SQL内外左右交叉连接,交叉连接
    在查询多少个表时,大家平常会用“连接查询”。连接是关周全据库模型的首要特色,也是它有别于于其余种类数据库管理种类的一个注脚。   SQL左右连接
  • 目录维护常用方法总括,SQLSEEscortVE宝马7系怎么着
    目录维护常用方法总括,SQLSEEscortVE宝马7系怎么着
    意气风发. 索引概述 关于介绍索引,有豆蔻梢头种“文章太史,挥毫万字,一饮千钟”的豪迈感觉,因为索引须求讲的知识点太多。在每一种关系型数据
  • 澳门新萄京采用的恢复方法
    澳门新萄京采用的恢复方法
    set rowcount 20000 delete from UFSystem..ua_log set rowcount 0 原文地址: truncate 表之后,采用的恢复方法 作者: ban仙 一、sybase创建用户数据库的脚本。 设置  trunca