我試圖建立一個函數,需要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),並將其轉換回爲字符串。這是多餘的比較兩個「數字」字符串?我應該使用數字()和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函數將開始處的ask提示符作爲參數。如果沒有小數的數字與沒有小數的相反不匹配,則將其增加0.01。在循環結束之前,我希望它檢查先前的數字+1(因爲它是* 100)是否等於反向,如果是這樣,則寫下一個數字。
它沒有工作,所以我嘗試添加parseFloat和toString來指定更嚴格/更明確的轉換。我也使用了鬆散的相等運算符,但它仍然不起作用。
我的問題:這是一個轉換或語法問題還是你不能比較2個函數的輸出?我是否應該比較2個變量,如果是這樣,我如何將reverseIt函數中的for循環分配給變量?
var ask = prompt(「Enter Price」); (x){ x =(parseFloat(x)* 100).toString(); (var i =(x.length-1); i> = 0; i--){ \t a =(a + String(x.substr(i,1))); } return a; }; var b = parseFloat(reverseIt(ask)); var removeDec = function(j){ return(parseFloat(j)* 100)。的toString(); } var c = parseFloat(removeDec(ask)); if(b == c){document.write(「Palindrome」); } else { document.write(「Not a Paindrome!」); }'謝謝你的幫助!找出最上面的部分,現在我需要閱讀浮點算法,我知道了! – user3211460
@ user3211460很高興有幫助。 – xxbbcc