我需要這樣做的右手(不圓,地板或小區):添加零的浮點數
例如:
1.58700023(16位)
預計1.58700000
我正在做這個操作:(值-32768.0)/ 32768轉換爲(字節值爲浮點數的實際值)int他的轉換有這個錯誤= X.00000023或其他
我需要這樣做的右手(不圓,地板或小區):添加零的浮點數
例如:
1.58700023(16位)
預計1.58700000
我正在做這個操作:(值-32768.0)/ 32768轉換爲(字節值爲浮點數的實際值)int他的轉換有這個錯誤= X.00000023或其他
我假設你想實現與原語的舍入。
舍入爲小數點後四位,與10e4相乘,轉換爲整數(有效截斷或去除小數),然後除以浮點值10e4,該值將結果再次轉換爲浮點數。例如:
#include <stdio.h>
int main()
{
double f = 1.58700023;
printf("%10.10f\n", f);
// Round to 4 decimal places
double r = (int)(f*10000.0)/10000.0;
printf("%10.10f\n", r);
return 0;
}
此輸出:
1.5870002300
1.5870000000
有沒有這個程序支持的許多邊緣的情況下,雖然。例如,您可能需要添加1/10e4的一半來執行舍入到最接近的下一個數字等。
不工作:結果 1.58700023 1.58799997 –
這是很po可能你不能用浮游物來做這件事。請注意,並非所有值都可以精確地表示爲float
:畢竟它僅限於32位(通常)。
對於打印,你應該能夠使用:
printf("%.3f", 1.58700023);
這將通過四捨五入的值轉換成字符串打印1.587
。
這將是一個不錯的主意,指出如何比較可以解決(就像你提出了一個打印的修復程序,因爲我猜這肯定是一個問題) –
不爲我工作:導致 1.58700023 1.58799997 編輯:我使用浮動 –
雙作業操作對我的罰款 –
可能重複[浮點數學是否被破壞?](https://stackoverflow.com/questions/588004/是浮點數學打破) – Olaf