T-SQL / SQL 服务器:转换后舍入(十进制)SqlCommand
T-SQL / SQL Server : rounding after convert (decimal) SqlCommand
我想在添加到 datagridview 之前规范化我的 SQL 服务器列,我在 SQL 查询中完成了。但我有一个问题。
如果值完全除法(例如 100/100=1),我不想看到这个值像 1.00000000000000。如果该值不是完全除法(例如 3/7=0.42857142857),我想在四舍五入后将该值四舍五入为两位数 (0.43)。
这是我的代码:
string q = "SELECT column1, column2, ((CONVERT(DECIMAL(18, 2), column3) / (SELECT MAX(column3) FROM tablename)) * 100) AS normalizedColumn3
FROM tablename .......;
我需要对第 3 列进行归一化,它在归一化之前的值在 1 - 2000000 之间。在归一化之后,值将在 0.01 - 100 之间。
归一化公式:
column 3 = ((column 3 / maximum column 3) * 100)
感谢您的回答...
我相信您可以使用 ROUND ( numeric_expression , length [ ,function ] )
或 SELECT ROUND(CAST (# AS decimal (#,#)),#);
来四舍五入您的小数点。
这里有更多信息:https://docs.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql?view=sql-server-2017
如果您只需要两位小数,就会出现数据丢失的小问题。 1 到 2,000,000
之间的值至少需要 5 位小数
例子
Declare @YourTable table (Col3 float)
Insert into @YourTable values
(1),(1536),(1000000),(2000000)
Select A.*
,NewVal = convert(decimal(10,2), (Col3*100.0) / ( Select max(Col3) from @YourTable) )
From @YourTable A
Returns
Col3 NewVal
1 0.00 -- At decimal(10,5) you would see 0.00005
1536 0.08
1000000 50.00
2000000 100.00
我想在添加到 datagridview 之前规范化我的 SQL 服务器列,我在 SQL 查询中完成了。但我有一个问题。
如果值完全除法(例如 100/100=1),我不想看到这个值像 1.00000000000000。如果该值不是完全除法(例如 3/7=0.42857142857),我想在四舍五入后将该值四舍五入为两位数 (0.43)。
这是我的代码:
string q = "SELECT column1, column2, ((CONVERT(DECIMAL(18, 2), column3) / (SELECT MAX(column3) FROM tablename)) * 100) AS normalizedColumn3
FROM tablename .......;
我需要对第 3 列进行归一化,它在归一化之前的值在 1 - 2000000 之间。在归一化之后,值将在 0.01 - 100 之间。
归一化公式:
column 3 = ((column 3 / maximum column 3) * 100)
感谢您的回答...
我相信您可以使用 ROUND ( numeric_expression , length [ ,function ] )
或 SELECT ROUND(CAST (# AS decimal (#,#)),#);
来四舍五入您的小数点。
这里有更多信息:https://docs.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql?view=sql-server-2017
如果您只需要两位小数,就会出现数据丢失的小问题。 1 到 2,000,000
之间的值至少需要 5 位小数例子
Declare @YourTable table (Col3 float)
Insert into @YourTable values
(1),(1536),(1000000),(2000000)
Select A.*
,NewVal = convert(decimal(10,2), (Col3*100.0) / ( Select max(Col3) from @YourTable) )
From @YourTable A
Returns
Col3 NewVal
1 0.00 -- At decimal(10,5) you would see 0.00005
1536 0.08
1000000 50.00
2000000 100.00