我是第一次使用 JMP 的学生,对于任何错误的术语,我深表歉意。
我正在使用此公式将代码分配给不同的支出范围以进行 RFM 分析。

我遇到的问题是最高值 259.85。 它有时会返回正确的代码“5”,有时会返回空白单元格。

谁能帮我解决这个问题? 感谢您的任何输入!
这是一个博客如果.
这是上一个关于用二进制浮点数表示以 10 为基数的十进制数的问题。 简短的回答是像 .1 或 .2 这样的数字用二进制表示,就像 1/3 在基数 10 中一样:无限重复的数字序列。 它在某个点被截断并变圆,并且可能稍大或稍小。 (轻微地大约是 1e-15)。 与 .333+.333 != .667, .1+.2 !=.3 相同
.1+.2==.3
0 //为什么不?减去它们,看看它们为什么不同...
(.1 + .2) - .3
5.55111512312578e-17 //这是一个非常小的差异
这不是 JMP 特有的;请参阅上面第二个链接中的 Excel 注释。
根据 Total_money 的计算方式,259.85 附近的值可能是 259.8500..01 或 259.8499..99(大致),您可能希望 if 语句在中间点拆分便士(未经测试的代码,大致正确):
// caution: counting pennies using floating point will be painful!
if( total_money > 259.845, "5", // 259.85 and above
total_money > 139.895, "4", // 139.90 and above
total_money > 89.845, "3", // 89.85 and above
...
"0") // none of the above
这如果按顺序进行每个测试并使用第一个正确的答案。 最后的“0”答案没有测试,是别的if 语句的子句。
谢谢,嗯。 根据您的输入,我将公式修改为如下所示:

我不确定这是否正是您的意图,但它遵循了您建议的精神,至少,在删除值的空间以隐藏在一个 if 语句的上限和下一个语句的下限之间。
然而,这对我来说确实很奇怪,因为我不相信这个数据会超过 2 个小数点,所以我不明白为什么会落在 .84 和 .85 之间。
非常感谢你的帮助!
total_money 的值可能介于 259.84 和 259.85 之间。您可以尝试删除 if 语句中“else if”条件的上限,并保留一个开放的“else”条件。此处似乎不适用的另外两个常见问题是数据缺失和数据类型错误。 这是一个例子:
