【发布时间】:2014-02-17 02:30:59
【问题描述】:
我正在尝试构建一个函数,该函数采用小数点后 2 位的价格并找到下一个最高回文数。我知道还有其他几种方法可以解决这个问题,但我很好奇为什么我的方法不起作用。我是 JS 新手,所以这可能是一个简单的。任何建议都会很棒。
我将它分成更小的块,并在下面解释了我想要它做什么:
var ask = prompt("Enter a price");
var reverseIt = function (x) {
x = (parseFloat(x) * 100).toString();
for (var i = (x.length - 1); i >= 0; i--) {
x.substr(i, 1);
}
return
};
reverseIt 函数接受一个参数来删除小数点 (* 100) 并将数字反转。
var removeDec = function (j) {
return (parseFloat(j) * 100).toString();
}
removeDec 函数接受一个参数,删除小数点 (* 100),并将其转换回字符串。这对于比较两个“数字”字符串是多余的吗?我应该改用 Number() 和 String() 函数吗?
var findDrome = function (i) {
for (var i; removeDec(i) != reverseIt(i); i += (1 / 100)) {
if ((removeDec(i) + 1).toString() == reverseIt(i)) {
document.write(i + (1 / 100));
}
} return
};
findDrome(ask);
findDrome 函数将开始时的询问提示作为参数。如果没有小数的数字与没有小数的反向数字不匹配,则将其增加 0.01。在循环结束之前,我希望它检查前面的数字 +1(因为它是 * 100)是否等于反向,如果是,则写下一个数字。
它不起作用,所以我尝试添加 parseFloat 和 toString 来指定更严格/更明确的转换。我还使用了松散的相等运算符,但它仍然无法正常工作。
我的问题:这是一个转换或句法问题,还是不能比较两个函数的输出?我应该比较 2 个变量吗?如果是,如何将 reverseIt 函数中的 for 循环分配给一个变量?
【问题讨论】:
标签: javascript string function compare palindrome