我的代码:
if (calculatedColumn5 >= calculatedColumn) {
'Enough credits.'
}
{
'Not enough credits.'
}
即使'calculatedColumn5'显然大于'calculatedColumn',也会评估为“没有足够的积分”。
我甚至试过这个:
if (calculatedColumn5 >= calculatedColumn) {
'Enough credits.'
}
else if (calculatedColumn5 < calculatedColumn)
{
'Not enough credits.'
}
else {
''
}
......它总是评估为''!那么我的“if”条件是否存在问题,他们只是总是评估为假?
顺便说一下,变量(calculatedColumn5和calculatedColumn)都是十进制值。
答案 0 :(得分:2)
也许这些值实际上是字符串,并且正在作为字符串进行比较。
尝试使用:
if (parseFloat(calculatedColumn5) >= parseFloat(calculatedColumn)) {
答案 1 :(得分:0)
请记住,在JS中,未定义(未初始化)变量的计算结果为false。请尝试以下方法:
var a;
if (a) console.log('True'); else console.log('False');
评估为false。
对未定义值执行的任何逻辑运算也是如此。
var a;
var b = 5;
if (a > b) console.log('greater'); else console.log('lower or equal');
评估为false。
答案 2 :(得分:-1)
你应该舍入两个或至少摆脱小数,以避免不必要的行为。请查看https://stackoverflow.com/a/18741293/2192152
此外:
// Test if ===, or greated
if (calculatedColumn5 >= calculatedColumn) {
'Enough credits.'
}
// Test if strictly inferior
else if (calculatedColumn5 < calculatedColumn)
{
'Not enough credits.'
}
// this will NEVER fire as all other cases have been tested.
else {
''
}
编辑:
这是有效的。假设2位小数,但你可以乘以100,1000或任何你需要的。 (你甚至可以通过拆分a
变量并确定句点背后的长度来自动完成。)
var a = 12.21;
var b = 12.35;
a = Math.round(a * 100);
b = Math.round(b * 100);
var test = a > b ? 'A > B' : 'A < B';
alert(test);