首页 > 编程知识 正文

fabs函数与abs函数的区别,fabs函数和abs分别在什么文件里

时间:2023-05-06 00:33:16 阅读:224937 作者:4355

问题

  昨天遇到的一个BUG,服务器程序中间的一个数值变成了0.000000,之前都是正常的;

跟踪排查

  增加日志后发现,使用的abs函数,处理了一个浮点型的数值,走了整型的abs,直接将浮点数转换成了整型;
  使用fabs后,程序可以正常运行,具体为什么没有找到原因。
  服务器上gcc和g++的环境没有变,之前运行都没有问题。

网上资料

  1.abs在C语言中只处理整型,使用math.h文件;fabs处理浮点型数值;
  2.abs在C++语言中可以支持浮点型的数值。在<stdlib.h>中追加了abs函数的重载;
  3.如果在C++程序中,由于头文件关系,不慎使用了C版本的abs函数,并且输入的是一个有小数的浮点数,那么其行为就可能不符合程序员的预期了,因为在传入函数参数时,浮点数会用截断的方式转换为整数。
  4.在某些编译器环境下,在不使用**using space std;**的情况下,std::abs() 和 abs()的行为有可能不同。std::abs()包括std::abs(int), std::abs(float), std::abs(long long)等,而abs()有可能只有abs(int)一种形式,导致abs(float)返回的值永远为0。
  5.使用abs时使用std::abs可以解决这种情况;
![在这里插入图片描述](https://img-blog.csdnimg.cn/7e2d37189f37499c9cf2be83f5a3a377.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6buR6ICB5aaW,size_20,color_FFFFFF,t_70 =500x,g_se,x_16)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。