我在C++中有一個浮點數,並且數字可以採用不同的形式,例如, 355.5或9.9(這是從測試代碼輸入的)。將C++中的浮點數舍入到一位小數
我有一個函數,它是
float return_max(angle_set_t *angles)
{
float val;
float max;
max= angles->key;
while(angles != NULL)
{
val= angles->key;
if(max<=val)
{
max=val;
}
angles = angles->right;
}
return max;
}
max
可以是一個浮點值。我想將值舍入到小數點後一位。
我需要一個通用的解決方案,因此適用於355.555555和9.999999
float first_aset()
{
//do somethig
result=return_max();
return result;
}
void main()
{
if(first_aset(S, 357.0, 20.0) != 9.9 ||
first_aset(T, 357.0, 20.0) != 9.9)
{
printf("Error in wrap-around interval (3)\n");
printf(" first in interval [357, 20) in S is %f, should be 9.9\n",
first_aset(S, 357.0, 20.0));
printf(" first in interval [357, 20) in T is %f, should be 9.9\n",
first_aset(T, 357.0, 20.0));
}
}
在這裏是problem..the結果是:在環繞間隔(3)
錯誤
S中的區間[357,20)中的第一個是9.900000,應該是9.9
在T中的區間[357,20)中的第一個是9 0.900000,應該是9.9
您是否需要四捨五入來顯示給用戶的值,或者您是否需要執行進一步的計算,以便將值舍入?你有一個特定的四捨五入策略嗎? (有多種方法可以舍入一個數字。) – 2010-10-17 04:30:14
furhter的計算 – abbas 2010-10-17 04:32:23
爲什麼你認爲舍入在這裏是個好主意?在這種情況下,「十進制數字」的意義是什麼?爲什麼不僅以更高的精度生活併爲此感到高興呢? – fredoverflow 2010-10-17 13:52:13