我有一個要求,我需要以這種方式管理javascript'eval',如果任何計算的結果是無窮大,我希望它將它變爲0.`eval`除零的結果爲零
var x = 10
var y = 20
var a = eval(x * y/0 + 5)
對於上述計算理想的結果應該是無窮大+ 5是無窮大,但我想無窮+ 5應爲0 + 5 = 5
我知道0/0不是無限大,但是這僅僅是一個要求
我有一個要求,我需要以這種方式管理javascript'eval',如果任何計算的結果是無窮大,我希望它將它變爲0.`eval`除零的結果爲零
var x = 10
var y = 20
var a = eval(x * y/0 + 5)
對於上述計算理想的結果應該是無窮大+ 5是無窮大,但我想無窮+ 5應爲0 + 5 = 5
我知道0/0不是無限大,但是這僅僅是一個要求
對於以上計算理想結果應該是無限+ 5
Infinity + 5
是Infinity
。在控制檯中試試Infinity + 5
。
...應該是0 + 5 = 5 ......
我不知道你想什麼說有,但你的表達式的計算方式是這樣的:
((x * y)/0) + 5
沒有意義的地方,你會有0 + 5
,當其他操作完成時,加法發生在最後。
注意:您根本不需要或想要eval
。簡單地說:
var x = 10;
var y = 20;
var a = x * y/0 + 5;
其我的客戶要求將無窮大結果簡單替換爲0,如上面的計算10 * 20/0 =無窮大和無窮大+ 5 =無窮大。如果您使用JavaScript eval函數評估上述代碼,它將只會給出無窮大的結果。我想要的結果爲無窮大+ 5 = 0 + 5 = 5 – user3133994
@ user3133994:如果您的客戶希望您用'0'代替'Infinity',則必須明確地執行此操作。 (例如:'if(!isFinite(result)){result = 0;} result + = 5;')這與數學的所有標準規則完全相反。 –
你沒有明白我的觀點。我不是在說整個評估,而是在詢問其中的一部分。也許你正在解釋錯誤的T. J. Crowder。我知道它的錯誤數學,但我們仍然希望 – user3133994
我不清楚你的要求。要打開無限零使用「if語句」 試試這個代碼:
var x = 10;
var y = 20;
var a = x * y;
//checks if a is zero or not
if(a==0)
{
//if a is zero assign value of c is equal to 5 to avoid infinity problem
c=5;
}
else
{
c=b/0+5;
}
我不想檢查整個結果,我只是想如果任何計算中的計算導致無窮大,我希望它爲0.請參閱我給出的例子 – user3133994
您需要編寫一個自定義函數來替換'eval'來解決此問題 –
據我瞭解,在表達變得無窮大的任何一點,將其設置爲0,並保持評估?
function EVAL(exp) {
exp.replace(/ /, ''); // Remove whitespace
exps = exp.split(/(?=[+\-*/])/); // Split by operators
var result = exps[0];
for (var x = 1; x < exps.length; x++) {
result = eval(result + exps[x]);
if (!isFinite(result)) result = 0;
}
return result;
}
alert(EVAL("10+3/0+5"));
假設var tmp = eval(x * y/0 + 5)在這種情況下,它將成爲無窮大,根據我的要求它應該是5.它有3個評估是x * y,(X * y)/ 0和(x * y/0)+5。 – user3133994
感謝加里,你的問題正確。 – user3133994
@ user3133994不客氣,這是一個不尋常的請求,但我很高興能夠幫助!如果您的問題得到解決,請標記正確的答案。 – Gary
從什麼時候應該由零等於零師?你想達到什麼目的? – J0e3gan
0除以0在數學中是未定義的,而不是無窮大不爲零 – Balder