Recabamos en todo el mundo on line para así brindarte la solución a tu duda, si continúas con inquietudes puedes dejar tu inquietud y te contestamos con mucho gusto.
Solución:
A decimal(9,6)
almacena 6 dígitos en el lado derecho de la coma. Mostrar ceros finales o no es una decisión de formato, generalmente implementada en el lado del cliente.
Pero dado que los formatos SSMS float
sin ceros finales, puede eliminar los ceros finales lanzando el decimal
a un float
:
select
cast(123.4567 as DECIMAL(9,6))
, cast(cast(123.4567 as DECIMAL(9,6)) as float)
huellas dactilares:
123.456700 123,4567
(Mi separador decimal es una coma, pero SSMS formatea decimal con un punto. Aparentemente es un problema conocido).
Puedes usar el FORMAT()
función (SqlAzure y Sql Server 2012+):
SELECT FORMAT(CAST(15.12 AS DECIMAL(9,6)), 'g18') -- '15.12'
SELECT FORMAT(CAST(0.0001575 AS DECIMAL(9,6)), 'g10') -- '0.000158'
SELECT FORMAT(CAST(2.0 AS DECIMAL(9,6)), 'g15') -- '2'
Tenga cuidado al usar con FLOAT (o REAL): no use g17
o más grande (o g8
o mayor con REAL), porque la precisión limitada de la representación de la máquina provoca efectos no deseados:
SELECT FORMAT(CAST(15.12 AS FLOAT), 'g17') -- '15.119999999999999'
SELECT FORMAT(CAST(0.9 AS REAL), 'g8') -- '0.89999998'
SELECT FORMAT(CAST(0.9 AS REAL), 'g7') -- '0.9'
Además, tenga en cuenta que, según la documentación:
FORMAT se basa en la presencia de .NET Framework Common Language Runtime (CLR). Esta función no será remota ya que depende de la presencia del CLR. La comunicación remota de una función que requiere CLR provocaría un error en el servidor remoto.
También funciona en SqlAzure.
SELECT CONVERT(DOUBLE PRECISION, [ColumnName])
Si posees algún recelo y capacidad de modernizar nuestro crónica eres capaz de escribir una crítica y con gusto lo estudiaremos.