小數我想,如果他們是0。例如我的雙打打印double
與C中的printf
語句只小數位,但不是第一個小數打印的雙重
double number1 = 0.95;
double number2 = 0.05;
number 1
應打印爲95
和number 2
應打印爲5
。
小數我想,如果他們是0。例如我的雙打打印double
與C中的printf
語句只小數位,但不是第一個小數打印的雙重
double number1 = 0.95;
double number2 = 0.05;
number 1
應打印爲95
和number 2
應打印爲5
。
事情是這樣的:
#include <stdio.h>
#include <string.h>
const char *trailingDecimals(char *buffer, size_t bufsize, double val)
{
static const char *empty = "";
snprintf(buffer, bufsize, "%.20f", val);
char *result = strchr(buffer, '.');
if (!result) return empty;
while (*++result == '0');
char *tail = buffer + strlen(buffer) - 1;
if (*tail == '0')
{
while (*--tail == '0');
*++tail = 0;
}
return result;
}
int main(void)
{
double test = 12.00506;
char buf[64];
puts(trailingDecimals(buf, 64, test));
}
但要注意的問題,精度比你預計你可能會得到更多的地方。
您可以使用sprintf並跳過「0」。從你的輸出緩衝區。
雖然這可能是一個有價值的提示來解決問題,但一個好的答案也可以證明解決方案。請[編輯]提供示例代碼以顯示您的意思 - 並說明這與其他答案有何不同。或者,可以考慮將其寫爲註釋。 –
然後顯示你的嘗試。 –
你可以使用'sprintf()'和'strchr()'...但沒有函數直接做你在這裏問的問題,所以這個問題看起來像是寫代碼的請求。 –
「小數位」是什麼意思?二進制浮點數沒有「小數位」 –