当我自己为我的IoT产品制作ftoa功能时,我在gg上遇到了一个奇怪的问题。
下面的程序应该为零。但结果是1.000000!?
gcctest.c
#include <stdio.h>
int main()
{
double f = 2.0;
int d;
d = (int)f; // d = 2
f -= d; // f = 0.0
printf("%lf\n", f);
}
如果你尝试f = 0.11或0.13,你就会正确地得到零。
由于我怀疑“d =(int)f”的“强制转换”操作,我尝试了下面的测试程序。
gcctest2.c
$ gcc --version
gcc (GCC) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ cygcheck -c cygwin
Cygwin Package Information
Package Version Status
cygwin 1.7.28-2 OK
在这种情况下,结果为零。似乎“gcctest.c”的程序存在一些问题。
这是已知的问题吗?你知道如何避免这种情况得到正确的结果吗?如果我能得到任何帮助,我将不胜感激。
gcc和cygwin的版本如下。
type ValidTagOptions = "img" | "input";
function createElement(tagName: ValidTagOptions): HTMLImageElement;
function createElement(tagName: ValidTagOptions): HTMLInputElement;
谢谢,芋头