找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

求助 C语言计算问题

查看数: 1277 | 评论数: 10 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-12-2 23:44

正文摘要:

求助 C语言问题。 在C语言 123.456×3≠370.368 123.456×3=370.36799999999999999999999 number数据   转字符  char数据时,做了位数限制。 如果,不做限制,一点转换就没有了响应。只能 ...

回复

ID:988182 发表于 2021-12-5 11:36
修改一下精度就可以了
ID:976493 发表于 2021-12-4 20:41
精度问题,重新改一下就行
ID:883242 发表于 2021-12-4 18:34
我把出问题的函数提出来,大家看看什么问题。

  1. void number_char(double num ,char *pch)
  2. {
  3.         int i=0, j=0;
  4.         long k=1, zs=0;
  5.         while((long)num > 10*k)
  6.                 k *= 10;
  7.         for(i=0; k>=1;i++)
  8.         {
  9.                 pch[i] = ((long)num)%(10*k)/k+48;
  10.                 k /= 10;
  11.         }
  12.         pch[i]=46;
  13.         for(j=0; j<i; j++)
  14.         {
  15.                 zs *= 10;
  16.                 zs += pch[j]-48;
  17.         }
  18.         num -= zs;
  19.         while(num > 0.0000001 && i<18)
  20.         {
  21.                 num *= 10.0;
  22.                 i++;
  23.                 pch[i] = ((long)num)/1+48;
  24.                 num = num- ((long)num)/1;
  25.         }
  26. }
复制代码
ID:139866 发表于 2021-12-4 18:00
这个是精度问题

51hei拼音截图20211204155235.png (3.16 KB, 下载次数: 35)

51hei拼音截图20211204155235.png
ID:301191 发表于 2021-12-4 01:24
顶一下
ID:417092 发表于 2021-12-4 01:19
13205495918 发表于 2021-12-3 07:54
你是在用c++搞什么开发哎,请问一下。

无聊时间,学点编程。打发无聊时间。。。。
ID:313048 发表于 2021-12-3 18:11
正常的  精度问题,C++和C里面都有这种情况,还有一种情况就是XX.000000000000000000000001这种小数点后面多了那么个1,自己处理一下就好了 ,别大惊小怪。
ID:987646 发表于 2021-12-3 17:01
精度问题,四舍五入就好了
ID:883242 发表于 2021-12-3 16:52
明显是number_char()的行为不符合你的预期,那就重写好了。
ID:908826 发表于 2021-12-3 07:54
你是在用c++搞什么开发哎,请问一下。

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表