首页 > 解决方案 > 除法结果为0

问题描述

它可能看起来很愚蠢,但是当我将 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

标签: excelvba

解决方案


关于上面 Scott Craner 评论的解释: Double(and Float) 有小数点。Long没有。Long简直就是大了Integer

因此,如果我采用A/BandA = 1B = 2and 定义两者AB那么Long结果将是0

如果我定义A, BasDecimal那么答案将是0.5(如您所想)。一旦你定义了一个类型(正如你在上面所做的那样)并且它是设计使然,这种行为存在于类型化的编程语言中。2.4有些东西(人类、汽车)在小数点之后并不能传达真正的含义(每个家庭都有孩子是什么意思?)。

如有疑问,请始终检查您正在使用的编程语言中可用的数据类型。你会惊讶于这个讨论会把你带到哪里。


推荐阅读