2014-10-20 30 views
1

我想在ANSI C中以「.5」格式打印0.5值? 我搜索了網絡和計算器,但我沒有找到我想要的。 我試過「%.1f」和「%0.1f」。但是他們中的更多人工作。如何在C中的printf中編寫.5?

回答

2

有一個在C沒有這樣的規格在開始打印小數不0。順便說一句,你可以使用此代碼對你的情況:

printf(".%d", (int)(0.5*10)); 
1

嘗試以下解決方法:

double f = 0.5; 

printf(".%u\n" , (unsigned)((f + 0.05) * 10)); 
+0

每當有人在我前面的:) – Seprum 2014-10-20 18:42:35

1

接受的答案後

應該在代碼需要避免的煩惱與浮點值,INF,NaN或邊界條件像

printf(".%d", (int)(0.46*10)); // prints "0.4" 

後處理字符串。

void PrintdNoLead0(double x) { 
    const char *format = "%.1f\n"; 
    if (fabs(x) < 1.0) { 
    char buf[10]; // Some buffer large enough for x in range -1<x<1 
    sprintf(buf, format, x); 
    char *p = strchr(&buf[1], '.'); 
    if (p[-1] == '0') { 
     memmove(&p[-1], p, strlen(p)); 
    } 
    fputs(buf, stdout); 
    } else { 
    printf(format, x); 
    } 
} 
+0

我同意你的看法,所以我告訴我的解決方案,它只是在他的情況下,可以接受的(含0.5)。 – Seprum 2014-10-20 20:23:08

+1

@Seprum你也可以寫'printf(「。5」);'如果你的解決方案只能接受0.5 – Igor 2014-10-21 07:56:57