【问题标题】:Inconsistent Modulus (=MOD()) Behavior in ExcelExcel 中的模数不一致 (=MOD()) 行为
【发布时间】:2012-07-07 01:14:40
【问题描述】:

我在 Excel 电子表格中遇到了一些令人困惑的行为。两列,我们称为 A 和 B。A 包含“时间小数”,例如 0.15 或 0.30(十五或三十分钟)。我需要将其转换为“普通小数”,例如 0.25 或 0.5。其中的值来自表中的其他列。

在进行转换之前,我需要确定时间是否应该四舍五入到一刻钟。我想我会使用 =MOD() 来检查“时间小数”* 100 是否可以被 15 整除。

但是:我得到的结果不一致。在 A 列我有“时间小数”,在 B 列我有公式:

=MOD(A1*100,15)

在下面的屏幕截图中,我希望它在两行中都给出 0,但事实并非如此:

据我所知,A1 和 A2 中的数据是相同的。所有四个可见单元格都是“数字”类型。

幕后有什么我不知道的事情吗?有没有办法可以强制正确的行为?

【问题讨论】:

标签: excel excel-formula


【解决方案1】:

最可能的原因是第一个不完全是 0.30,而是例如 0.299999。这将使 MOD(xx*100,15) 的结果为 14.99999,如果您只显示 2 个小数,则显示为 15.00。

【讨论】:

  • 我想到了,但是增加小数位会返回预期结果:0.30000000000 等。
  • 另外 A1 * 100 / 15 = 2.0000000
  • @BPMJ 尝试添加一个公式:=A1=0.3 并检查它是否返回 true。
  • @BPMJ 或者,将现有公式替换为 =MOD(ROUND(A1*100,0),15),看看是否得到相同的结果。
  • 有趣的是 =A1=0.3 返回了 true。对值进行四舍五入,产生了正确的结果......就像采用 =INT(A1*100) 一样。对于我的程序员大脑来说,获取 INT 值是有意义的 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多