小编rka*_*ski的帖子

浮点变量不会在C - 无限循环中递减

以下代码很糟糕,但在生产情况下遇到过.这是通过做一些不那么疯狂的事情来解决的 - 但我无法弄清楚为什么价值保持不变.FWIW这个任意大的值取自时间戳.

#import <stdio.h>

int main(void)
{
    float wtf =  466056.468750;

    while(wtf > .01)
    {
        wtf -= .01;

        /* other operations here */

        printf("wtf = %f\n", wtf);
    }

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

程序运行时,产生的输出是

wtf = 466056.468750

wtf = 466056.468750

wtf = 466056.468750

wtf = 466056.468750

wtf = 466056.468750

wtf = 466056.468750

wtf = 466056.468750

wtf = 466056.468750

wtf = 466056.468750

wtf = 466056.468750

调试时,我可以看到为表达式返回了一个合适的值,wtf - .01但它似乎没有持续存在.

我的问题是,为什么减少的值不存储在变量中?

在gdb中,操作的值打印如下

10          printf("wtf = %f\n", wtf);
(gdb) p wtf
$1 = …
Run Code Online (Sandbox Code Playgroud)

c floating-point

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

标签 统计

c ×1

floating-point ×1