我有愚蠢的数学问题。在T-SQL
中,为什么这两个总和不同:
select (34.3+17.5 + 13.5)/31.0*28.0 --= 58.9806280
select 34.3/31.0*28.0 + 17.5/31.0*28.0 + 13.5/31.0*28.0 --= 58.9806000
答案 0 :(得分:2)
使用运营商优先级规则以及您的号码类型进行计算。
第一个select (34.3+17.5 + 13.5)/31.0*28.0
分3步完成:
select (34.3 + 17.5 + 13.5) -- = 65.3
select 65.3 / 31.0 -- = 2.106451
select 2.106451 * 28.0 -- = 58.9806280
第二个是这样做的:
select 34.3 / 31.0 -- = 1.106451
select 17.5 / 31.0 -- = 0.564516
select 13.5 / 31.0 -- = 0.435483
select 1.106451 * 28.0 -- = 30.9806280
select 0.564516 * 28.0 -- = 15.8064480
select 0.435483 * 28.0 -- = 12.1935240
select 30.9806280 + 15.8064480 + 12.1935240 -- = 58.9806000
如果你走得更深,也要看一下这个:
select cast(34.3 as float)/31.0*28.0 + 17.5/31.0*28.0 + 13.5/31.0*28.0
-- => 58,9806451332903
我的英语不是那么好,其他人已经指出了你要求的内容,所以如果你想知道为什么数字是这样的,那么有2个很棒的链接可以帮到你:{ {3}}和https://stackoverflow.com/a/424052/4584335