sql server控制小数显示位数的解决办法。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server控制小数显示位数的解决办法。相关的知识,希望对你有一定的参考价值。

如题,我有一列是float类型,由于float类型存储精度问题,在数据库里存储成如0.94999999999999996小数位非常多的数字。我想让他显示成0.95该怎么弄?
我试过select Convert(NUMERIC(18,2),0.95000000000000000)的写法,但输出成了.95,个位的0丢了。该怎么写能实现我要的效果呢?求解。

解决办法和操作步骤如下:

1、首先,打开SQL Server数据库,然后准备一个小数,见下图。

2、其次,完成上述步骤后,可以使用round函数进行十进制处理,但是round会将十进制变为0,而不是保留位数的实际数,见下图。

3、接着,可以使用cast函数执行小数转换,直接转换为numeric类型,见下图。

4、但是,在使用cast时,请务必注意,转换类型不要发生数字溢出,见下图。

5、然后,编写转换时,应尽可能把转化的类型位数写得大一点,见下图。

6、最后,也可以使用Convert函数进行转换,这与cast用法类似,见下图。

参考技术A

1、首先我们打开SQL  Server数据库,然后准备一个小数,如下图所示

2、然后我们可以通过round函数来进行小数处理,但是round会把小数后面变成0而不是真正意义上的保留位数。

3、所有接下来我们就可以通过cast函数进行小数转化,如下图所示,直接转化为numeric类型。

4、但是在用cast的时候需要注意的是转化的类型中不要发生位数溢出,如下图所示。

5、我们在进行转化的时候尽可能的把转化的类型位数写的大一点,如下图所示。

6、然后还可以通过Convert函数进行转化,如下图所示,和cast用法差不多。

参考技术B

控制小数显示位数的办法如下:

decimal(18,0)
18是定点精度,0是小数位数。
decimal(a,b)
a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

实例:

decimal[ (p[ ,s] )] 和 numeric[ (p[ ,s] )]

固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 ISO 同义词为 dec 和 dec(p, s),numeric 在功能上等价于 decimal。

p(精度)

最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。

该精度必须是从 1 到最大精度 38 之间的值。默认精度为 18。

s (小数位数)

小数点右边可以存储的十进制数字的最大位数,小数位数必须是从 0 到 p 之间的值。

仅在指定精度后才可以指定小数位数,默认的小数位数为 0;

因此,0 <= s <= p。最大存储大小基于精度而变化。

 

参考技术C

我运行了蛮好的,个位0应该不会丢啊!

参考技术D 不显示前导0不是数据本身的问题,需要在显示的程序中使用诸如FormatNumber的函数进行格式化处理

SQL中的小数点后的输入位数.

是那一个函数可以控制小数点后面的位数的?

1、用函数 ROUND(数值,s) ,其中 s 表示 小数位数。

例:SELECT ROUND(4.994,2) 返回 4.990。

2、用函数 CAST(数值 as numeric(n,s)),其中n表示有效数字位数,s表示小数位数。

例:SELECT CAST(4.994 as numeric(10,2)) 返回 4.99。

3、用函数 CONVERT(numeric(n,s),数值),其中n表示有效数字位数,s表示小数位数。

例: SELECT CONVERT(numeric(10,2),4.985) 返回 4.99。

其运用的函数是函数 TRUNC。而trunc函数的功能和函数INT类似,是截取日期或数字,返回指定的值。函数trunc直接去除数字的小数部分,而函数INT则是向下舍入到最接近的整数。

扩展资料

TRUNC(for number)语法格式:TRUNC(number,[decimals])

其中:

number 待做截取处理的数值。

decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分。

trunc函数 turnc(x,y)如果y是负数,则对x在小数点左边的第|y|位处进行截断。

例如:TRUNC(5.75, -1)=0;

看成 0005.75.000 从小数点左边第一位往左边截,是0。

下面是该函数的使用情况:

TRUNC(89.985,2)=89.98

TRUNC(89.985)=89

TRUNC(89.985,-1)=80

注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。

参考资料来源:百度百科  trunc

参考技术A

运用的函数是函数 TRUNC。

trunc是一种函数,功能和函数INT类似,是截取日期或数字,返回指定的值。函数trunc直接去除数字的小数部分,而函数INT则是向下舍入到最接近的整数。用法如下:trunc

TRUNC(number,num_digits)

Number 需要截尾取整的数字。

Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。

扩展资料

TRUNC(for dates)

TRUNC函数为指定元素而截去的日期值。

其具体的语法格式如下:

TRUNC(date,[fmt])

其中:date是一个日期值,fmt是日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去。

下面是该函数的使用情况:

TRUNC(TO_DATE('24-Nov-1999 08:00 pm','dd-mon-yyyy hh:mi am'))

='24-Nov-1999 12:00:00 am'

TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am'),'hh') ='24-Nov-1999 08:00:00 am'

trunc(sysdate,'yyyy') --返回当年第一天.

trunc(sysdate,'mm') --返回当月第一天.

trunc(sysdate,'d') --返回当前星期的第一天.

trunc(sysdate,'dd')--返回当前年月日

trunc(sysdate, 'hh')--返回当前小时

trunc(sysdate, 'mi')--返回当前分钟

参考资料:百度百科——trunc

参考技术B 一、用函数 ROUND(数值,s) , 其中 s 表示 小数位数

例:SELECT ROUND(4.994,2) 返回 4.990

二、用函数 CAST(数值 as numeric(n,s)),其中n表示有效数字位数,s表示小数位数

例:SELECT CAST(4.994 as numeric(10,2)) 返回 4.99

三、用函数 CONVERT(numeric(n,s),数值),其中n表示有效数字位数,s表示小数位数

例: SELECT CONVERT(numeric(10,2),4.985) 返回 4.99本回答被提问者采纳
参考技术C 6位

以上是关于sql server控制小数显示位数的解决办法。的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 2000/2005/2008 中使用 FLOAT 转换小数位数

SQL Server中的小技巧(重复替换截取去空格去小数点后的位数)

SQL Server 数值四舍五入,小数点后保留2位

SQL Select 语句小数位数影响计算的准确率的问题

sql类型 money 小数不显示开头的0

SQL中的小数点后的输入位数.