120 个解决方案
#1
订
#2
float是单精度数啊 2.3是对的啊
#3
你可以在用户输入后 然后在四舍五入一下 取小数点后一位小数
我现在从不用float类型 恶心死了 只用varchar和int
我现在从不用float类型 恶心死了 只用varchar和int
#4
int和varchar解决不了所有问题
#5
decimal
#6
用decimal吧
#7
当时现在改不了类型 根本就不能改
#8
LZ可以看下,数据变化的时机:
1. 在SQL语句里,值已经发生变化,这种问题可以通过程序控制
2. SQL语句执行后,值发生变化,这个部分属于系统问题了
1. 在SQL语句里,值已经发生变化,这种问题可以通过程序控制
2. SQL语句执行后,值发生变化,这个部分属于系统问题了
#9
你把整条记录取出来,然后单独修改浮点数的值,最后再把它更新到数据库中就行了
#10
float本就是近似值,它不是精確值。
通俗點講float是有兩個值的,一個是Text,就是你在DB中看到的數字,如2.3,另一個則是Value,就是它真實的值,也就是2.299999999999.
所以在做四舍五入、精確的Report、比較(只能用<、>而不能用=)時請盡量避免使用float類型。建議使用Decimal類型或者Numeric類型。
如果LZ不想改變類型可以嘗試這樣,select convert(num as decimal(10,3)) from tb
通俗點講float是有兩個值的,一個是Text,就是你在DB中看到的數字,如2.3,另一個則是Value,就是它真實的值,也就是2.299999999999.
所以在做四舍五入、精確的Report、比較(只能用<、>而不能用=)時請盡量避免使用float類型。建議使用Decimal類型或者Numeric類型。
如果LZ不想改變類型可以嘗試這樣,select convert(num as decimal(10,3)) from tb
#11
應用線上叢書的一段話。
最后再強調一下,float是近似值,不是準確值,你看到的2.3就是2.2999999999的近似值。
/*
使用 float 與 real 資料
float 和 real 資料類型也稱為近似資料類型。float 和 real 的行為遵循 IEEE 754 有關近似數值資料類型的規格。
近似數值資料類型不會儲存對許多數字指定的精確數值,而會儲存十分接近的近似值。針對許多應用程式來說,指定數值和所儲存近似值之間的些微差異並不值得注意。不過有時候這些差異卻又十分重要。由於 float 和 real 資料類型的近似本質,在需要精確數值行為時請勿使用這些資料類型,例如財務應用程式、牽涉到四捨五入的作業或者進行相等檢查作業時。反之,請使用 integer、decimal、money 或 smallmoney 資料類型。
避免在 WHERE 子句的搜尋條件中使用 float 或 real 資料行,尤其是 = 與 <> 運算子。最好將 float 和 real 資料行限制為 > 或 < 比較。
IEEE 754 規格提供四種四捨五入模式:四捨五入進位、無條件進位、無條件捨去進位與四捨五入到零。Microsoft SQL Server 2005 則使用無條件進位。所有運算都準確到保證的精確度,但可能產生稍微不同的浮點值。因為浮點數的二進位表示法可以使用任一種有效的四捨五入方式,所以不可能有效地限定浮點值。
*/
最后再強調一下,float是近似值,不是準確值,你看到的2.3就是2.2999999999的近似值。
#12
我也间碰到同样的问题,关注
#13
decimal
#14
我觉得你分析的很好 我这里属于第二种情况 意思就是说根本就不能解决麽?
#15
我以前也尝试你的看法 你的知道显示的时候看到的是2.3 但是我现在解决的是 插入的时候就要显示成2.3
#16
Decimal类型可以直接设置小数点后的小数位......
#17
select convert(YourColumnName as decimal(10,1)) from YourtbName
#18
lz如果插入后显示的是2.3,插入前是2.3吗?
#19
從一個Table讀取然后Inert進另一個Table
insert into tableB
select convert(YourColumnName as decimal(10,1))from YourtbName
#20
顶一下
我从来不用 float和double 来存储数据
我们平时说的整数,它是离散的值,数量可以确定。比如说1~ 100之间,一共有100个整数,因此用一个字节就可以精确表示
而小数是连续的值,从纯数学角度看,仅仅是1~2之间就有无穷多个小数。因此,无论计算机内有多大的内存,都是不可能精确表示一个小数的。所以,计算机表示的小数都是近似值。
#21
带小数点的我全用DOUBLE
#22
是的 我是用存储过程做的插入 插入的参数是2.3 但是插入到数据库后 就变成了保留了16位小数
关键看数据库里面的那个值
#23
你的意思是我这边还需要建一张表麽?
#24
Decimal
#25
你的數據從哪來?你要導到哪里?你是如何導數據的?
#26
用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。
语法
float [ ( n ) ]
从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。
语法
float [ ( n ) ]
从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。
#27
我的数据是从程序中手动输入的
通过model 存入到库中 如果是这样的话 那么修改的时候如何操作? 修改floate 这个类型的字段的值,那麽 那个值该如何处理呢?
通过model 存入到库中 如果是这样的话 那么修改的时候如何操作? 修改floate 这个类型的字段的值,那麽 那个值该如何处理呢?
#28
要么在程式中將值定下來,要么修改float的類型,怎么改自己上網查。
#29
检查是否在数据库字段上是否定义了多精度的值,或者在Dataset上定义的字段类型,float本来就是单精度 应该不会出错的
#30
恩 好像是没有别的办法 了 我觉得我已经做到死胡同了
#31
宁外 感谢推荐这个帖子的人 没想到会被推荐 很开心 呵呵
#32
#33
建议使用decimal
#34
我就是用decimal解决的。还是别用float了吧。
#35
.
#36
#37
还是用decimal实在一点
#38
学习重要
#39
lg
#40
学习了
#41
Numeric(24,6)--我们用的
#42
这也推荐?这只能说明现在学.NET开发的基础都不过关,连IEEE 754浮点数是怎么回事都不知道...甚至连存储和显示的原理都不知道...
1.你要用浮点数就必须容忍它们的误差...
2.你要显示什么格式什么精度的数字和存储无关...
看不懂这两点说明你需要先去找本最基础的计算机原理书认真看...
1.你要用浮点数就必须容忍它们的误差...
2.你要显示什么格式什么精度的数字和存储无关...
看不懂这两点说明你需要先去找本最基础的计算机原理书认真看...
#43
天啦,这也叫问题,你不会四舍五入显示吗?
#44
学些了,谢谢
#45
学些了,谢谢
#46
没积分用了。。。可怜啊。。。。。。。。。。。
#47
不知道你的数据库是什么数据库啊,如果是MS SQL,建议不要用float类型
#48
如果是为了显示我也不会费这个功夫提问了 关键是存入到数据库的时候一起开发的人员不希望看到这样的数字
他们说很乱..
#49
我的sql 是不太好 但是这个问题的根源是 float 在什么情况下会是这样的 如果是float 如果不给这样写float[(n)] 它应该是输入是什么 存储什么 但是我的为什么会这样 我们应该不能让设计数据库的人从新设计吧 只有想办法
#50
数据类型是能改掉的!你所谓的不能改是因为你表里有数据,把数据清空了就可以改了
#1
订
#2
float是单精度数啊 2.3是对的啊
#3
你可以在用户输入后 然后在四舍五入一下 取小数点后一位小数
我现在从不用float类型 恶心死了 只用varchar和int
我现在从不用float类型 恶心死了 只用varchar和int
#4
int和varchar解决不了所有问题
#5
decimal
#6
用decimal吧
#7
当时现在改不了类型 根本就不能改
#8
LZ可以看下,数据变化的时机:
1. 在SQL语句里,值已经发生变化,这种问题可以通过程序控制
2. SQL语句执行后,值发生变化,这个部分属于系统问题了
1. 在SQL语句里,值已经发生变化,这种问题可以通过程序控制
2. SQL语句执行后,值发生变化,这个部分属于系统问题了
#9
你把整条记录取出来,然后单独修改浮点数的值,最后再把它更新到数据库中就行了
#10
float本就是近似值,它不是精確值。
通俗點講float是有兩個值的,一個是Text,就是你在DB中看到的數字,如2.3,另一個則是Value,就是它真實的值,也就是2.299999999999.
所以在做四舍五入、精確的Report、比較(只能用<、>而不能用=)時請盡量避免使用float類型。建議使用Decimal類型或者Numeric類型。
如果LZ不想改變類型可以嘗試這樣,select convert(num as decimal(10,3)) from tb
通俗點講float是有兩個值的,一個是Text,就是你在DB中看到的數字,如2.3,另一個則是Value,就是它真實的值,也就是2.299999999999.
所以在做四舍五入、精確的Report、比較(只能用<、>而不能用=)時請盡量避免使用float類型。建議使用Decimal類型或者Numeric類型。
如果LZ不想改變類型可以嘗試這樣,select convert(num as decimal(10,3)) from tb
#11
應用線上叢書的一段話。
最后再強調一下,float是近似值,不是準確值,你看到的2.3就是2.2999999999的近似值。
/*
使用 float 與 real 資料
float 和 real 資料類型也稱為近似資料類型。float 和 real 的行為遵循 IEEE 754 有關近似數值資料類型的規格。
近似數值資料類型不會儲存對許多數字指定的精確數值,而會儲存十分接近的近似值。針對許多應用程式來說,指定數值和所儲存近似值之間的些微差異並不值得注意。不過有時候這些差異卻又十分重要。由於 float 和 real 資料類型的近似本質,在需要精確數值行為時請勿使用這些資料類型,例如財務應用程式、牽涉到四捨五入的作業或者進行相等檢查作業時。反之,請使用 integer、decimal、money 或 smallmoney 資料類型。
避免在 WHERE 子句的搜尋條件中使用 float 或 real 資料行,尤其是 = 與 <> 運算子。最好將 float 和 real 資料行限制為 > 或 < 比較。
IEEE 754 規格提供四種四捨五入模式:四捨五入進位、無條件進位、無條件捨去進位與四捨五入到零。Microsoft SQL Server 2005 則使用無條件進位。所有運算都準確到保證的精確度,但可能產生稍微不同的浮點值。因為浮點數的二進位表示法可以使用任一種有效的四捨五入方式,所以不可能有效地限定浮點值。
*/
最后再強調一下,float是近似值,不是準確值,你看到的2.3就是2.2999999999的近似值。
#12
我也间碰到同样的问题,关注
#13
decimal
#14
我觉得你分析的很好 我这里属于第二种情况 意思就是说根本就不能解决麽?
#15
我以前也尝试你的看法 你的知道显示的时候看到的是2.3 但是我现在解决的是 插入的时候就要显示成2.3
#16
Decimal类型可以直接设置小数点后的小数位......
#17
select convert(YourColumnName as decimal(10,1)) from YourtbName
#18
lz如果插入后显示的是2.3,插入前是2.3吗?
#19
從一個Table讀取然后Inert進另一個Table
insert into tableB
select convert(YourColumnName as decimal(10,1))from YourtbName
#20
顶一下
我从来不用 float和double 来存储数据
我们平时说的整数,它是离散的值,数量可以确定。比如说1~ 100之间,一共有100个整数,因此用一个字节就可以精确表示
而小数是连续的值,从纯数学角度看,仅仅是1~2之间就有无穷多个小数。因此,无论计算机内有多大的内存,都是不可能精确表示一个小数的。所以,计算机表示的小数都是近似值。
#21
带小数点的我全用DOUBLE
#22
是的 我是用存储过程做的插入 插入的参数是2.3 但是插入到数据库后 就变成了保留了16位小数
关键看数据库里面的那个值
#23
你的意思是我这边还需要建一张表麽?
#24
Decimal
#25
你的數據從哪來?你要導到哪里?你是如何導數據的?
#26
用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。
语法
float [ ( n ) ]
从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。
语法
float [ ( n ) ]
从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。
#27
我的数据是从程序中手动输入的
通过model 存入到库中 如果是这样的话 那么修改的时候如何操作? 修改floate 这个类型的字段的值,那麽 那个值该如何处理呢?
通过model 存入到库中 如果是这样的话 那么修改的时候如何操作? 修改floate 这个类型的字段的值,那麽 那个值该如何处理呢?
#28
要么在程式中將值定下來,要么修改float的類型,怎么改自己上網查。
#29
检查是否在数据库字段上是否定义了多精度的值,或者在Dataset上定义的字段类型,float本来就是单精度 应该不会出错的
#30
恩 好像是没有别的办法 了 我觉得我已经做到死胡同了
#31
宁外 感谢推荐这个帖子的人 没想到会被推荐 很开心 呵呵
#32
#33
建议使用decimal
#34
我就是用decimal解决的。还是别用float了吧。
#35
.
#36
#37
还是用decimal实在一点
#38
学习重要
#39
lg
#40
学习了
#41
Numeric(24,6)--我们用的
#42
这也推荐?这只能说明现在学.NET开发的基础都不过关,连IEEE 754浮点数是怎么回事都不知道...甚至连存储和显示的原理都不知道...
1.你要用浮点数就必须容忍它们的误差...
2.你要显示什么格式什么精度的数字和存储无关...
看不懂这两点说明你需要先去找本最基础的计算机原理书认真看...
1.你要用浮点数就必须容忍它们的误差...
2.你要显示什么格式什么精度的数字和存储无关...
看不懂这两点说明你需要先去找本最基础的计算机原理书认真看...
#43
天啦,这也叫问题,你不会四舍五入显示吗?
#44
学些了,谢谢
#45
学些了,谢谢
#46
没积分用了。。。可怜啊。。。。。。。。。。。
#47
不知道你的数据库是什么数据库啊,如果是MS SQL,建议不要用float类型
#48
如果是为了显示我也不会费这个功夫提问了 关键是存入到数据库的时候一起开发的人员不希望看到这样的数字
他们说很乱..
#49
我的sql 是不太好 但是这个问题的根源是 float 在什么情况下会是这样的 如果是float 如果不给这样写float[(n)] 它应该是输入是什么 存储什么 但是我的为什么会这样 我们应该不能让设计数据库的人从新设计吧 只有想办法
#50
数据类型是能改掉的!你所谓的不能改是因为你表里有数据,把数据清空了就可以改了