相关疑难解决方法(0)

为什么划分两个整数不会浮动?

任何人都可以解释为什么当我将它除以整数时b会在这里被舍入,尽管它是一个浮点数?

#include <stdio.h>

void main() {
    int a;
    float b, c, d;
    a = 750;
    b = a / 350;
    c = 750;
    d = c / 350;
    printf("%.2f %.2f", b, d);
    // output: 2.00 2.14
}
Run Code Online (Sandbox Code Playgroud)

http://codepad.org/j1pckw0y

c

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

除法结果始终为零

我得到了这个C代码.

#include <stdio.h>

int main(void)
{
        int n, d, i;
        double t=0, k;
        scanf("%d %d", &n, &d);
        t = (1/100) * d;
        k = n / 3;
        printf("%.2lf\t%.2lf\n", t, k);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我的变量't'总是为零(在printf函数中)?

c double multiplication division integer-division

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

为什么除法结果为零而不是小数?

自学C并发现当我为温度转换进行等式时,除非我将分数更改为小数,否则它将无效.即

tempC=(.555*(tempF-32)) 会工作,但tempC=((5/9)*(tempF-32)) 不会奏效.

为什么?
根据C Primer Plus,它应该可以工作,因为我正在使用tempC和tempF的浮子.

c

16
推荐指数
1
解决办法
7616
查看次数

将华氏温度转换为摄氏温度的C程序始终打印为零

我需要一些帮助,用于将华氏温度转换为C摄氏温度的程序.我的代码看起来像这样

#include <stdio.h>
int main(void)
{
    int fahrenheit;
    double celsius;

    printf("Enter the temperature in degrees fahrenheit:\n\n\n\n");
    scanf("%d", &fahrenheit);
    celsius = (5 / 9) * (fahrenheit - 32);
    printf("The converted temperature is %lf\n", celsius);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

每次执行它时,结果为0.000000.我知道我错过了什么,但无法弄清楚是什么.

c

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

std :: pow给出了小数指数的错误近似值

这就是我的意思

 double x=1.1402
 double pow=1/3;
 std::pow(x,pow) -1;
Run Code Online (Sandbox Code Playgroud)

结果是0但我期望0.4465

等式 (1 + x) ^3= 1.1402,找到x.

c c++ numerical-methods

6
推荐指数
3
解决办法
5271
查看次数

使用蒙特卡罗方法计算PI给出了不精确的答案

我试图用蒙特卡罗方法计算PI.无论MAXLEN有多大,我的代码都会给出结果3.000.经过多次调试后,我无法得到我做错的事.

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

#define sqr2(x) ((x)*(x))
#define frand() ((double) rand() / (RAND_MAX))
#define MAXLEN 1000


int circumscribed(int radius){
    float xcoord = frand();
    float ycoord = frand(); 
    float coord = sqr2(xcoord) + sqr2(ycoord);

    if(coord <= radius)
        return 1;
    return -1;      
}

int main()
{
    int i;
    int circles = 0, rect = 0;;
    for(i = 0; i < MAXLEN; i++)
    {
        if(circumscribed(1) > 0)   // if(circumscribed(1)) shoul be enough but it doesn't work. Very odd in my opinion.
            circles++; …
Run Code Online (Sandbox Code Playgroud)

c pi

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

整数除法(1/n)的结果总是向下舍入到0.000

我写了一个简单的程序,它读取一个整数number并打印:1 / number.

我不明白为什么输出总是:0.000.

void main()
{
    int n = 0;
    scanf("%d",&n);

    float f = 1 / n;
    printf("%f",f);
}
Run Code Online (Sandbox Code Playgroud)

c

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