[英]SQL Server RTM version is not rounding up number
當轉換為浮點數時,十進制 0.00750 是值 7.4999999999999997E-3(盡管 SSMS 將顯示 0.0075)。 使用 SQLCMD,您可以看到實際值:
sqlcmd -Q"DECLARE @c float = 0.00750;SELECT @c as float,ROUND(@c, 3) AS rounded;"
結果:
float rounded
------------------------ ------------------------
7.4999999999999997E-3 7.0000000000000001E-3
If you change the database compatibility level to 120 (SQL 2016) of the database (on-prem, Azure SQL Database Managed Instance, or Azure SQL Database):
ALTER DATABASE YourDatabase SET COMPATIBILITY_LEVEL = 120;
並重復相同的查詢,然后結果被錯誤地四舍五入,就像您的 SQL 2016 實例一樣:
float rounded
------------------------ ------------------------
7.4999999999999997E-3 8.0000000000000002E-3
請記住,浮點數是近似值,不能准確表示所有十進制值。 所以 Azure SQL 數據庫是正確的舍入行為,但如果需要,可以使用數據庫兼容級別控制該行為以提供向后兼容性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.