小数我想,如果他们是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()'...但没有函数直接做你在这里问的问题,所以这个问题看起来像是写代码的请求。 –
“小数位”是什么意思?二进制浮点数没有“小数位” –