标签: floating-point

(100.0/3.0)*3 == 100,但使用变量得到99.99996.这是怎么回事?

我知道浮子固有的不精确.我感到困惑的是为什么我会从我期望解决的问题返回"100"0.99999999等.0.33*3怎么可能产生100?

这是我的代码:如果我说

float x = 100.0/3.0;
printf("%f",x*3.0);
Run Code Online (Sandbox Code Playgroud)

输出为"99.999996".但如果我说

printf("%f",(100.0/3)*3);
Run Code Online (Sandbox Code Playgroud)

输出为"100".它们不应该相同吗?我希望x解决(100.0/3.0),正是用明文写的 - 然而它们会产生两种不同的结果.

c++ floating-point

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

为什么我的功能打印为'0'?

这是我的代码,我不知道为什么会发生这种情况:

#include <stdio.h>

void foo(float *);

int main()
{
    int i = 10, *p = &i;
    foo(&i);
}

void foo(float *p)
{
    printf("%f\n", *p);
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
Run Code Online (Sandbox Code Playgroud)

c c++ floating-point int format-specifiers

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

float的访问说明符不符合预期

#include <stdio.h>
int main()
{
    printf("%f",5);
}
Run Code Online (Sandbox Code Playgroud)

此代码打印0.000000.任何人都可以解释为什么会这样.

floating-point

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

C程序提供意外的输出

这是我的C程序:

#include <stdio.h>
main(){ printf("%f", 5/3); }
Run Code Online (Sandbox Code Playgroud)

我期待输出1.000000,但我得到的输出是0.000000.有人可以解释原因吗?

c floating-point printf integer rounding

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

速率不起作用,总是输出0.000

这是我的代码.

 float total,rate;        
 rate = score / 25;       
 printf("Total: %f", rate);
Run Code Online (Sandbox Code Playgroud)

但这不起作用; 它总是输出0.000.你能帮我吗?

c floating-point

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

如何在C++中保持double变量的精度?

它不是关于印刷.它是关于存储价值.

int x = 1234;
double y = 0.3456;

double z = x + y;

目前z包含1234.35.我想要z包含1234.3456

可以做些什么来实现这一目标?

c++ floating-point

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

为什么numpy的正弦函数在某些点上如此不准确?

我刚检查过它numpysine功能.显然,它会在pi周围产生非常不准确的结果.

In [26]: import numpy as np

In [27]: np.sin(np.pi)
Out[27]: 1.2246467991473532e-16
Run Code Online (Sandbox Code Playgroud)

预期的结果是0.为什么numpy那么不准确?

在某种程度上,我不确定将计算结果视为不准确是否可接受:它的绝对误差在一个机器epsilon(对于binary64)内,而相对误差是+inf- 我觉得有些困惑的原因.任何的想法?

[编辑]我完全理解浮点计算可能不准确.但是大多数浮点库可以设法在一小部分误差范围内提供结果.这里,相对误差是+ inf,这似乎是不可接受的.想象一下,我们想要计算

1/(1e-16 + sin(pi)) 
Run Code Online (Sandbox Code Playgroud)

如果我们使用numpy的实现,结果将是灾难性的错误.

python floating-point numpy

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

printf'ing浮动时的舍入问题

有人可以解释为什么C printf在第二种情况下会逐渐减少吗?

printf("%.03f", 79.2025); /* "79.203" */
printf("%.03f", 22.7565); /* "22.756" */
Run Code Online (Sandbox Code Playgroud)

c floating-point

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

计算机是否开始正确存储0.1?

在学习浮点运算时,我发现了一些东西,我引用:'浮点数/双精度不能精确存储0.1".

SO上有一个问题指向同一件事,接受的答案也很有说服力.但是我想在我自己的计算机上试一试,所以我写下面的程序如下

double a = 0.1;

if (a == 0.1)
{
    Console.WriteLine("True");
}
else
{
    Console.WriteLine("False");
}

Console.Read();
Run Code Online (Sandbox Code Playgroud)

和控制台打印True.令人震惊,因为我已经说服了别的东西.任何人都可以告诉我浮点运算是怎么回事?或者我只有一台将数值存储为10的计算机?

c# floating-point precision ieee-754

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

始终打印相同的浮点值

该程序是关于t为的不同值打印浮点值i,但是每次都打印相同的值。即使的值t改变了,它也总是为的每个值打印零n

为什么会这样呢?

#include <stdio.h>

int main(){
    float n;
    float sum=0,t,s=1,i;
    scanf("%f",&n);
    for(i=0;i<n;i++){

        t=(100/(1+2i));
        printf("\n%f",t);
    }
}
Run Code Online (Sandbox Code Playgroud)

输入5

输出:

0.000000
0.000000
0.000000
0.000000
0.000000
Run Code Online (Sandbox Code Playgroud)

这是ideone.com中的结果。

c floating-point gcc

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

标签 统计

floating-point ×10

c ×5

c++ ×3

c# ×1

format-specifiers ×1

gcc ×1

ieee-754 ×1

int ×1

integer ×1

numpy ×1

precision ×1

printf ×1

python ×1

rounding ×1