[英]GCC division truncates (rounding problem)
在Ubuntu Linux 10.04上使用GCC時,除法后我不需要進行舍入。
我試過了:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void FormatReading(int temp)
{
double reading = temp / 100;
printf("%f\n",reading); /* displays 226.000000, was expecting 226.60 */
}
int main(void)
{
FormatReading(22660);
return 0;
}
建議我嘗試:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void FormatReading(int temp)
{
long reading = temp ;
reading = reading / 100;
printf("%3.2ld\n",reading); /* displays 226 */
}
int main(void)
{
FormatReading(22660);
return 0;
}
我也嘗試過:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void FormatReading(int temp)
{
long reading = temp ;
double reading2 = reading / 100;
printf("%3.2f\n",reading2); /* displays 226.00 */
}
int main(void)
{
FormatReading(22660);
return 0;
}
我還以各種方式嘗試使用包含math.h和帶有編譯器標簽-lm的round函數,但沒有找到我想要的東西。
任何幫助,不勝感激。
最好的問候,伯特
double reading = temp / 100.0;
^^
temp / 100
是一個整數除法-您將結果分配給double不會改變這一點。
您正在使用整數除法,該除法總是給出整數結果而不是分數,然后將結果分配給雙精度數。 用100.0而不是100除以得到所需的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.