- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试解决一道数学题,但我的输出灵敏度略有不同,例如 0.07。然后我比较了代码中的 pow()
和 powf()
,我看到了这种敏感性。代码如下:
int main()
{
int terms, sign=-1;
double x, operation=0.0;
printf("Please enter the number of terms : ");
scanf_s("%d", &terms);
while (terms <= 0)
{
printf("Please re-enter the number of terms :");
scanf_s("%d", &terms);
}
printf("Please enter a value for x :");
scanf_s("%lf", &x);
for (int i = 1; i <= terms; i++)
{
sign = sign * (-1);
operation = operation + sign * powf(x + i / 10.0, (2 * i) - 1) / (2 * i);
}
printf("The result is : %.2lf\n", operation);
system("pause");
return 0;
}
示例:
terms : 10
x : 1.1
output : `-59783.61` with `powf`
output : `-59783.67` with `pow`
这些函数有什么区别?
最佳答案
pow
对 double
进行运算。 powf
在 float
上运行。这是 C 中相当标准的表示法,其中函数的基本名称将用于默认类型(如 int
和 double
)的操作数(和返回值),而带前缀和后缀的版本用于其他类型(如 long
、float
等)。这是一个引用:http://pubs.opengroup.org/onlinepubs/9699919799/ .
数据类型的这种差异充分解释了您在结果中看到的差异。
double
在尾数中包含 53 位精度,转换为约 16 位十进制数字的精度。这超出了您显示结果的精度,因此可能足以满足您的目的。
float
的尾数只有 24 位,相当于大约 7 位十进制数字。任何操作组合都会导致舍入误差几乎立即出现在您的显示精度范围内。
关于c - pow和powf有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53076189/
我正在尝试在 rtems 应用程序中使用 powf 函数。当我调用 powf(a,b); 时在 Init() 函数中,它编译正常。但是当我在其他函数中调用 powf 时,编译器会给出“对 powf 的
当 Sympy 生成 C 代码时, 有没有办法对表达式中的 pow(或 powf)出现强制执行 CSE 优化? 例如,这个代码片段 c, s = symbols('c s') myexpr = c**
我在使用 XCode 编译库时遇到错误: 'powf' is not a member of 'std' 包括在内。 谁能给我解释一下哪里出了问题? 最佳答案 直到 C++11,powf 只是一个 M
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我编写了这段 C 代码来计算 3 的平方值。 #include #include int main( void ) { float a; a = powf( 3, 2 );
Java 中是否存在与 Objective-C 等价的函数 float powf(float, float)? 谢谢。 最佳答案 有两个选项 double d = Math.pow(a, b); 或者
我正在试验 LLVM 的 JIT 功能,在调用 powf 时,我观察到如果我简单地为它添加一个声明,调用 powf 就可以工作 declare float @powf(float, float)) 并
我相信其他 Fedora 28 用户会知道,该操作系统的 glibc 最近已更新为 glibc 2.27。在许多其他方面,2.27 添加了 logf() 和 powf() 的新实现。这导致我的应用程序
我是一名优秀的程序员,十分优秀!