步骤1
查询:
import { Http, Response} from '@angular/http'
结果:
SELECT
(ISNULL(TRY_CONVERT(NUMERIC(38, 14), '123456789.34554563453524'), 0)
*
ISNULL(try_convert(NUMERIC(38, 14), '456789876.34556345345353'), 0))/100.0
第二步
以上查询我已修改为:
563938115391720.660302
但结果是:
SELECT (123456789.34554563453524 * 456789876.34556345345353) / 100.0
这里,Step1查询结果在某个时刻截断了小数。
如何重新编写它以获取Step2查询的确切数字( 563938115391720.660302253145411988 )。
答案 0 :(得分:2)
这与十进制精度的预测完全相同。 见T-SQL Decimal Division Accuracy
Numbers with decimal points are interpreted as NUMERIC in SQL Server to the exact precision shown。不漂浮。在这种情况下decimal (23, 14)
在第一个示例中,它们是decimal (38, 14)
将相同精度与显式CONVERT用于相同数据类型时的结果相同
SELECT
(ISNULL(TRY_CONVERT(NUMERIC(23, 14), '123456789.34554563453524'), 0)
*
ISNULL(try_convert(NUMERIC(23, 14), '456789876.34556345345353'), 0))/100.0
563938115391720.660302253145411988
注意,100.0
在这种情况下也是decimal(4,1)
最后的单词:this is long division that used to be taught at school经过一些精确的变化,因为乘法中的38/23差异