Excel中不一致的模(=MOD())行为

Excel中不一致的模(=MOD())行为,excel,excel-formula,Excel,Excel Formula,我在excel电子表格中遇到了一些令人困惑的行为。两列,我们称之为A和B。A包含“时间小数”,如0.15或0.30(十五或三十分钟)。我需要将其转换为“普通十进制”,例如0.25或0.5。其中的值来自表中的其他列 在进行转换之前,我需要确定时间是否应四舍五入到四分之一小时。我想我应该使用=MOD()来检查“时间小数”*100是否可以被15整除 但是:我得到的结果不一致。在A列中,我有“时间小数”,在B列中,我有公式: =MOD(A1*100,15) 在下面的屏幕截图中,我希望它在两行中都给出0

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

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

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

=MOD(A1*100,15)
在下面的屏幕截图中,我希望它在两行中都给出0,但事实并非如此:

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


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

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

我想到了这一点,但增加小数位将返回预期结果:0.300000000000等。此外,A1*100/15=2。0000000@BPMJ尝试添加一个公式:
=A1=0.3
,并检查它是否返回true。@BPMJ或者,将现有公式替换为
=MOD(ROUND(A1*100,0),15)
并查看是否得到相同的结果。有趣的是=A1=0.3返回true。将值四舍五入,生成正确的结果。。取an=INT(A1*100)也是如此。对于我的程序员来说,获取INT值是有意义的:-)