【发布时间】:2021-11-01 10:12:08
【问题描述】:
我在使用带有浮点值的 abs() 函数时遇到问题。它在使用整数时工作得很好,但是在使用浮点数时它总是只输出 1,即使它应该是例如 3.1 - 1.8 作为 1 出来。我正在使用数组来获取值,只是不确定发生了什么,我尝试使用fabs 和从 float 变为 double 但没有区别。
x_distance = abs(x_coord[0] - x_coord[1]);
D:/Data D 驱动器/University/Year_2/EEEE 2063/CourseWork2/test/main.c:33:18:
【问题讨论】:
-
对于实数(双精度),您应该使用 fabs 函数:programiz.com/c-programming/library-function/math.h/fabs abs 仅适用于整数
-
你实际做的是用
1调用abs,因为3.1-1.8的计算结果为1.3,在转换为int时被截断为1。正如您在规范中看到的那样,该函数被定义为int abs(int),除了int之外不能接受或返回任何内容。如果您在使用fabs时遇到问题,请显示您输入的内容和获得的内容。而且...你确实包括了math.h是吗? -
请在您的问题中添加完整的错误消息,而不是在 cmets 中。
-
如果您“尝试使用 fabs 并从 float 更改为 double 但没有区别”,那么还有其他内容未显示。请发Minimal Reproducible Example,最短的完整代码,显示问题。
-
这不是错误消息,而只是其中的一部分。这表明错误所在的位置,但由于您没有提供完整的程序,因此行号对我们没有用。真正的错误消息仍然丢失。是不是类似于“隐式声明函数
fabs”?
标签: c