它可能看起来很愚蠢,但是当我将11950除以47086514时,结果为0。
这是我尝试过的:
Dim total, share As Long
Dim split1 As Variant
split1 = Array(size1)
For i = 1 To size1 - 6
split1 = Split(vetA(i), ":") 'vetA(1) = 11950 and total = 47086514
share = CLng(split1(1)) / total
ws.Cells(i + 4, 16).Value = share
Next i
答案 0 :(得分:2)
以上关于Scott Craner的解释说明:
Double
(和Float
)有一个小数点。 Long
没有。 Long
只是更大的Integer
。
因此,如果我采用A/B
和A = 1
和B = 2
并将A
,B
都定义为Long
,那么结果将是{ {1}}。
如果我将0
,A
定义为B
,那么答案将是Decimal
(如您所想)。
一旦定义了一种类型(如上所示),并且是设计使然,这种行为就存在于所有类型的编程语言中。有些东西(人,汽车)没有传达超出小数点的真实含义(每个家庭有0.5
个孩子是什么意思。)
如有疑问,请始终检查所用编程语言中可用的数据类型。 this discussion可能带您到来。