相关疑难解决方法(0)

如何使用cout以完全精度打印双精度值?

所以我已经得到了我最后一个问题的答案(我不知道为什么我没有想到这一点).当我没想到它的时候,我正在打印一个圆润的double使用cout.如何使用全精度cout打印double

c++ floating-point precision iostream cout

308
推荐指数
9
解决办法
41万
查看次数

如何将浮点数转换为人类可读的分数?

假设我们有0.33,我们需要输出"1/3".
如果我们有"0.4",我们需要输出"2/5".

我们的想法是让人们可读,让用户理解"y部分中的x部分",作为理解数据的更好方式.

我知道百分比是一个很好的替代品,但我想知道是否有一个简单的方法来做到这一点?

language-agnostic algorithm numbers

100
推荐指数
11
解决办法
5万
查看次数

使用我的编译器和操作系统时,为什么当n = 5时pow(n,2)返回24?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int n,i,ele;
    n=5;
    ele=pow(n,2);
    printf("%d",ele);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是24.

我在Code :: Blocks中使用GNU/GCC.

怎么了?

我知道pow函数返回一个double,但是25适合一个int类型所以为什么这个代码打印24而不是25?如果n=4; n=6; n=3; n=2;代码有效,但有五个代码没有.

c math.h c-standard-library

23
推荐指数
1
解决办法
4809
查看次数

C将浮点数转换为int

我正在使用C(不是C++).

我需要将一个浮点数转换成一个int.我不想舍入到最接近的数字,我只是想消除整数部分之后的内容.就像是

4.9 -> 4.9 -> 4

c floating-point int casting type-conversion

17
推荐指数
4
解决办法
8万
查看次数

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
查看次数

GCC C++战队准确性

所以我参加了计算竞赛,我发现了一个奇怪的错误.pow(26,2)将总是返回675,有时是674?即使正确的答案是676.这些错误也发生在pow(26,3),pow(26,4)等比赛后经过一些调试后我相信答案与int事实有关.有趣的是,此类错误以前从未发生过.我用的电脑正在Windows 8上运行.GCC版本相当新,我相信2-3个月大.但我发现如果我在这些错误上转动o1/o2/o3优化标志会奇迹般地消失.pow(26,2)总会得到676也就是正确的答案谁能解释为什么?

#include <cmath> 
#include <iostream> 

using namespace std; 
int main() { 
    cout<<pow(26,2)<<endl; 
    cout<<int(pow(26,2))<<endl; 
}
Run Code Online (Sandbox Code Playgroud)

双打的结果很奇怪.

double a=26; 
double b=2; 
cout<<int(pow(a,b))<<endl; #outputs 675 
cout<<int(pow(26.0,2.0))<<endl; # outputs 676 
cout<<int(pow(26*1.00,2*1.00))<<endl; # outputs 676
Run Code Online (Sandbox Code Playgroud)

c++ gcc mingw cmath pow

11
推荐指数
1
解决办法
1748
查看次数

C:我用pow(10,2)和pow(10,j)获得了不同的结果,j = 2;

这个打印100:

int j=2;
int i= pow(10,2);  
printf("%d\n", i);
Run Code Online (Sandbox Code Playgroud)

这个打印99:

int j=2;
int i= pow(10,j);  
printf("%d\n", i);
Run Code Online (Sandbox Code Playgroud)

为什么?

c floating-point pow

8
推荐指数
1
解决办法
5715
查看次数

对于某些正整数n,m,will(int)pow(n,m)是错误的吗?

假定nm是正整数,且n 是一个整数的范围内,将(int)pow(n,m)永远给一个错误的答案?

我已经尝试了许多nm=2,并没有得到任何错误的答案为止.

c floating-accuracy

5
推荐指数
1
解决办法
329
查看次数

奇怪的战俘(x,y); 行为

在做我的作业时,我注意到一些非常奇怪的东西,我无法弄清楚为什么.

int x = 5;
cout << pow(x, 2);
Run Code Online (Sandbox Code Playgroud)

结果是25.那没关系.但如果我写这样的程序:

int x = 5;
int y = pow(x, 2);
cout << y;
Run Code Online (Sandbox Code Playgroud)

结果是24!

当x为2,3,4,6,7,8没有问题,但是5,10,11,13等结果比它应该低1.

if()也是一样的.

for (int x = 1; x <= 20 ; x++) {
    if (x * x == pow(x, 2)) 
    cout << x << endl;
}
Run Code Online (Sandbox Code Playgroud)

它打印出数字1,2,3,4,6,8,12,16.

c++ pow

4
推荐指数
3
解决办法
4652
查看次数

为什么 C 中的 pow() 函数在循环中是 10 的奇数指数时给出错误答案?

#include <stdio.h> 
#include <math.h>

int main()
{
    int loop, place_value=0, c = 5;
    for(loop = 0; loop < c; loop++)
    {
        place_value = 0;
        place_value = pow(10, loop);
        printf("%d \n", place_value);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码给出

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

为什么第 3 行和第 5 行分别是 99 和 9999 而不是 100 和 10000?

正常求电时,给出正确答案。

#include <stdio.h>
#include <math.h>

int main()
{
  printf ("%d", (int) pow (10,3 ));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)
1000
Run Code Online (Sandbox Code Playgroud)

c math loops pow

3
推荐指数
1
解决办法
107
查看次数