我正在寫一個C++類,它在向量中存儲一些double值(稱爲mpValues)並計算它們的平均值。構造時,值數組爲空,因此執行此計算將返回0.0/0.0。C++最好的方法來處理零除
我決定詢問零值的平均值是一個錯誤。因此,最好返回NaN並顯示一條錯誤消息,以便用戶知道該問題。 的代碼看起來是這樣的:
double Average::CalculateAverage() const
{
if(mpValues->size() == 0){
std::cerr << "Instance of Average at: " << this << " contains no values.\n"
<< "In this case the arithmetic mean is defined as NaN." <<std::endl;
return 0.0/0.0;
}
else{
...calculate the arithmetic mean
}
}
這是一個明智的做法,或者你有更好的建議?通常情況下,我不會那麼挑剔,但這是對工作機會的考驗,所以我想避免做出錯誤的決定。
在此先感謝!
但是你怎麼檢查那個南?如果它是一個錯誤條件,那就拋出一個異常或者將布爾返回參數設置爲false。 – acraig5075
@michael爲什麼只有一個*平均值*的整個班?這是過度勞累的尖叫聲。 –
您的返回0.0/0.0;通常不會返回NaN ...它通常會生成一個CPU陷阱/中斷/異常(這不是可以通常方式捕獲的C++異常)。 –