【发布时间】:2010-08-18 16:26:34
【问题描述】:
我正在用 C 语言编写一些程序。它有一部分用于进行概率计算,我正在使用 log 函数。普通库函数 log()...
代码是这样的
double somevalue = 0.29558101472995091;
temp = log(somevalue)
你猜怎么着?温度值 -1856.0000000000000!!!
由于给定的 log 值在某个结构中,所以我也编写了这个测试代码,并得到了相同的结果...
int main()
{
double somevalue;
double temp;
somevalue = 0.29558101472995091;
temp = log(somevalue);
return 0;
}
Results:
Somevalue = 0.29558101472995091
temp = -1856.0000000000000
是不是很疯狂。任何人都知道这里发生了什么。
我正在为此使用 Visual Studio 2005。我现在无法使用其他编译器。
谢谢,
微内核:)
【问题讨论】:
-
您如何检查 temp 的值?错误地使用 printf 比 log() 函数出错的可能性更大
-
供参考:log(0.29) = about -0.5
-
@mmyers:嗯?应该是-1.2188...
-
@mmyers:
log计算自然对数,而不是基于 10 的对数! -
您的示例程序不打印/显示任何结果。你怎么看结果?您是否能够生成一个可独立编译的示例,在屏幕上打印出错误的结果?编写的代码看起来是正确的。如果您在调试器中查看结果,如果构建已优化,则可能会误解它们。
标签: c++ c visual-c++ visual-studio-2005