簡體   English   中英

如何解決此錯誤:“未定義的函數或變量'NaN'”?

[英]How do I fix this error: “Undefined function or variable 'NaN'”?

我在黃色突出顯示的區域中收到一條錯誤消息,提示“未定義的函數或變量'NaN'”。

該代碼的目的是確定要退還給客戶的更改量。 這是基於一件物品的成本和所支付的金額。 同樣,代碼應返回一個標志,說明事務是否完成。

這不是我的全部代碼,但是我不想使此時間超出必要。

誰能告訴我怎么了?


function [Change, flag] = makeChange(Cost, Paid)


extra = Paid-Cost;

if extra > 0
    Change = extra;    
    flag = true;
elseif extra == 0
    Change = 0;
    flag = true;
    return
else
   flag = false;
   Change = NaN;
   warning('That''s not enough to buy that item.');
   return

end

我無法確認Octave 3.8.1的問題。

octave:1> makeChange.m
error: 'Paid' undefined near line 4 column 9
error: called from:
error:   /Path/to/makeChange.m at line 4, column 7
octave:1> Cost = 5
Cost =  5
octave:2> Paid = 10
Paid =  10
octave:3> [change, completed] = makeChange(Cost, Paid)
change =  5
completed =  1
octave:4> Cost = 10
Cost =  10
octave:5> Paid = 5
Paid =  5
octave:6> [change, completed] = makeChange(Cost, Paid)
warning: That's not enough to buy that item.
change = NaN
completed = 0

我建議將您的代碼重新格式化為以下格式:

function [Change, flag] = makeChange(Cost, Paid)

Change = Paid-Cost;
flag = true;

if Change < 0
   flag = false;
   Change = NaN;
   warning('That''s not enough to buy that item.');
   return
else
   return
end

通過重構,您可以節省一些不必要的比較,分配和邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM