相关疑难解决方法(0)

round()for C++中的float

我需要一个简单的浮点舍入函数,因此:

double round(double);

round(0.1) = 0
round(-0.1) = 0
round(-0.9) = -1
Run Code Online (Sandbox Code Playgroud)

我能找到ceil()floor()在math.h中-但不是round().

它是以另一个名称存在于标准C++库中,还是缺少?

c++ floating-point rounding

227
推荐指数
11
解决办法
36万
查看次数

114
推荐指数
5
解决办法
10万
查看次数

如何:x86中的pow(真实,真实)

我正在寻找pow(real, real)x86汇编中的实现.另外,我想了解算法的工作原理.

x86 assembly pow

31
推荐指数
2
解决办法
2万
查看次数

pow功能的奇怪行为

运行以下代码行时:

int i,a;    

for(i=0;i<=4;i++)  
{    
    a=pow(10,i);    
    printf("%d\t",a);    
}   
Run Code Online (Sandbox Code Playgroud)

我很惊讶地看到输出,它出来了 1 10 99 1000 9999而不是1 10 100 1000 10000.

可能的原因是什么?

注意
如果您认为它是浮点不准确,在上面的for循环中i = 2,存储在变量中的值a99.

但如果你写的话

a=pow(10,2);
Run Code Online (Sandbox Code Playgroud)

现在a的价值出现了100.怎么可能?

c pow

13
推荐指数
3
解决办法
4123
查看次数

为什么在C++中pow(10,5)= 9,999

最近我写了一段代码:

const int sections = 10;

for(int t= 0; t < 5; t++){
   int i = pow(sections, 5- t -1);  
   cout << i << endl;
}
Run Code Online (Sandbox Code Playgroud)

结果是错误的:

9999
1000
99
10
1
Run Code Online (Sandbox Code Playgroud)

如果我只使用这个代码:

for(int t = 0; t < 5; t++){
    cout << pow(sections,5-t-1) << endl; 
}
Run Code Online (Sandbox Code Playgroud)

问题不再发生:

10000
1000
100
10
1
Run Code Online (Sandbox Code Playgroud)

有没有人给我解释?非常感谢你!

c++ mingw pow

11
推荐指数
2
解决办法
8344
查看次数

pow功能在这里发生了什么?

我在这里看到了各种各样的答案,描述了powC 中函数的奇怪行为.
但我在这里有一些不同的问题.

在下面的代码我初始化int x = pow(10,2)int y = pow(10,n) (int n = 2).

在第一种情况下,当我打印它显示的结果时100 ,在另一种情况下它出来了99.

我知道pow返回double它会在存储时被截断int,但我想问为什么输出会有所不同.

CODE1

#include<stdio.h>
#include<math.h>
int main()
{
     int n = 2;
     int x;
     int y;
     x = pow(10,2);   //Printing Gives Output 100   
     y = pow(10,n);   //Printing Gives Output 99


     printf("%d %d" , x , y);

}
Run Code Online (Sandbox Code Playgroud)

Output : 100 99

为什么输出结果不同.?

我的gcc版本是4.9.2

更新:

代码2

int main()
    {
         int …
Run Code Online (Sandbox Code Playgroud)

c gcc compiler-optimization pow gcc4.9

10
推荐指数
2
解决办法
1397
查看次数

如果赋值为整数,则pow()的返回值会向下舍入

pow在C中使用函数并将返回值存储为整数类型.请参阅下面的代码段:

for (i = 0; i < 5; i++){
    val = (int)pow(5, i);
    printf("%d, ", val);
}
Run Code Online (Sandbox Code Playgroud)

这里i,val是整数,输出是1, 5, 24, 124, 624.我相信这是因为浮点数25被视为24.99999 ...在分配给整数时会向下舍入到24.

如果我仍然需要将返回值存储在int中,我怎么能通过这个?

c pow

6
推荐指数
2
解决办法
6896
查看次数

为什么pow(5,2)变成了24?

我正在制作一个简单的计算器,你可以选择一个功能,然后2个输入来得到你的答案.这是一个简洁的小程序,除了权力之外,一切都运行顺畅.每个号码都正常工作.

但根据这个:5^2=24, 5^3=624.我在用pow(number1,number2).

#include <iostream>
#include<math.h>

using namespace std;

int main()
{
    for(;;){
    int func;
    int number1;
    int number2;
    cout << "Input your function (+,-,x,/,Square,Power)(1,2,3,4,5,6) ";
    cin >> func;
    cout << "input #1: ";
    cin >> number1;
    cout << "input #2: ";
    cin >> number2;
    if (func==1){
        int answer;
        answer = number1 + number2;
        cout << number1 << " + " << number2 << " = " << answer << endl;
    }
    else {
            if (func==2){ …
Run Code Online (Sandbox Code Playgroud)

c++ calculator pow

-10
推荐指数
1
解决办法
3219
查看次数