如何找出sql server 2008中小数点后的位数。
假设值为10.12365479
我想知道小数点后面放了多少位数。
注意:该列的类型为FLOAT。
答案 0 :(得分:1)
我使用STR
+ REPLACE
+ LEN
+ CHARINDEX
个功能。检查下面的中间结果,了解它是如何工作的。
declare @V float = 10.12365479;
SELECT
@V AS v
,STR(@V, 50, 16) AS v_str
,REPLACE(STR(@V, 50, 16), '0', ' ') AS v_replace
,LEN(REPLACE(STR(@V, 50, 16), '0', ' ')) AS v_len
,CHARINDEX('.', STR(@V, 50, 16)) AS v_idx
,LEN(REPLACE(STR(@V, 50, 16), '0', ' ')) -
CHARINDEX('.', STR(@V, 50, 16)) AS decimal_digits
结果为8
+-------------+----------------------------------------------------+----------------------------------------------------+-------+-------+----------------+
| v | v_str | v_replace | v_len | v_idx | decimal_digits |
+-------------+----------------------------------------------------+----------------------------------------------------+-------+-------+----------------+
| 10.12365479 | 10.1236547900000000 | 1 .12365479 | 42 | 34 | 8 |
+-------------+----------------------------------------------------+----------------------------------------------------+-------+-------+----------------+
显然,答案通常是16(最大可能),因为你的浮点值将表示为10.1236547899999999
。