以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何保证比例计算数据后,其和相同  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=127233)

--  作者:hbhb
--  发布时间:2018/11/8 21:07:00
--  如何保证比例计算数据后,其和相同
大师:请问
a = 1553
b = 253
c = 289
d = 325

b1 = a*1553/(b+c+d)
b2 = b*1553/(b+c+d)
b3 = c*1553/(b+c+d)

如果保留小数点两位,不轧差的情况下,如何保证,b1+b2+b3 = 1553 ?

--  作者:有点甜
--  发布时间:2018/11/8 21:14:00
--  

用高精度小数,或者最后得到的数据允许适当误差。

 

Dim a As Decimal = 1553
Dim b As Decimal= 253
Dim c As Decimal= 289
Dim d As Decimal= 325


Dim b1 As Decimal= b*1553/(b+c+d)
Dim b2 As Decimal= c*1553/(b+c+d)
Dim b3 As Decimal= d*1553/(b+c+d)
msgbox(b1+b2+b3)

 

 


--  作者:hbhb
--  发布时间:2018/11/8 21:37:00
--  
我的意思:如果是货币153.25元,单元格比例计算后保留到分,如何保证比例计算后其和正好相等?列的数据类型是double?
--  作者:有点甜
--  发布时间:2018/11/8 21:42:00
--  

1、用高精度小数存放数据;

 

2、你显示成两位小数,但实际计算,用完整的计算。不然,你只能允许误差。