DiuDiuZ 2019-11-06 15:54 采纳率: 50%
浏览 419

为什么将浮点型数据转换成字符串时用sprintf输出导致精度不一样?

linux下gcc编译

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char const *argv[])
{
    float a;
    char str[100] = {'\0'};

    printf("please input a float number: ");
    scanf("%f", &a);
    sprintf(str, "%f", a);
    printf("%s\n", str);
    return 0;
}

结果:

please input a float number: 123.456

123.456001

  • 写回答

2条回答

  • adgentleman 2019-11-06 18:11
    关注

    sprintf(str, "%f", a); 这句
    添加一个精度,改为下面的代码表示三位小数
    sprintf(str, "%.3f", a);

    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 flask项目,怎么使用AJAX传数据库数据到echarts图表的data里,实现异步加载数据。
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题