Jun*_*yhé 1 sql-server t-sql sql-server-2012
我从 Excel 粘贴了一个公式并粘贴到 SQL Server Management Studio。
一旦我执行它,我得到一个意想不到的结果:
SELECT (((10320238-2092189)/2092189)*100.0)/4.0 --returns 75.000000
Run Code Online (Sandbox Code Playgroud)
但是在对查询中的每个值添加精度后,它返回正确的结果:
SELECT (((10320238.0-2092189.0)/2092189.0)*100.0)/4.0 --returns 98.31866289250000
Run Code Online (Sandbox Code Playgroud)
为什么第一个查询不会带来 98% 的结果?的内部数据类型是10320238
什么?是integer
吗?
发动机是
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
Run Code Online (Sandbox Code Playgroud)
它被称为“整数数学”——当你将两个整数相除时,任何余数都会被丢弃。相比:
SELECT integers = (10320238-2092189)/2092189,
decimals = (10320238.0-2092189.0)/2092189.0;
Run Code Online (Sandbox Code Playgroud)
结果:
integers decimals
-------- ------------
3 3.9327465157
Run Code Online (Sandbox Code Playgroud)
如果整数被除数除以整数除数,则结果是一个整数,该整数的任何小数部分都被截断。
归档时间: |
|
查看次数: |
51 次 |
最近记录: |