将FLOAT转换为NVARCHAR - 不同的小数位数

时间:2018-01-15 14:54:55

标签: tsql

查询:

SELECT CAST('123.1234' AS FLOAT) AS 'Float value', CAST(CAST('123.1234' AS FLOAT) AS NVARCHAR(MAX)) AS 'Text value'

返回:

Float value Text value
123,1234    123.123

为什么小数位数有差异?

TSQL Query

2 个答案:

答案 0 :(得分:1)

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql

当expression为float或real时,style可以是下表中显示的值之一。其他值处理为0.

  • 0(默认值)最多6位数。在适当的时候使用科学记数法。

  • 1总是8位数。始终使用科学记数法。

  • 2总是16位数。始终使用科学记数法。
  • 3始终为17位数。用于无损转换。使用此样式,每个不同的float或real值都可以保证转换为不同的字符串。适用于:Azure SQL数据库,从SQL Server 2016开始。
  • 126,128,129由于遗留原因而包含在将来的版本中可能会弃用。

以下代码会为您提供所需的结果

    SELECT CAST('123.1234' AS FLOAT) AS 'Float value', convert(nvarchar(max),CAST('123.1234' AS FLOAT) ,128 ) AS 'Text value'

答案 1 :(得分:0)

如果您真的希望从带有比例的数字中取回文本,则需要使用数字或小数类型并包含' scale'你想要衡量多少规模的第二个价值。 Float我相信只会进行估算,为了更准确的估算,你需要使用它。

( ( UserSettings )Application.Current.Resources["UserSettings"] ).FontSize = newFontSize;

更多数字数据类型:https://academy.vertabelo.com/blog/understanding-numerical-data-types-sql/

相关问题