首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算出的C/C++ log10函数产生的值不正确

计算出的C/C++ log10函数产生的值不正确
EN

Stack Overflow用户
提问于 2018-11-06 21:30:17
回答 1查看 388关注 0票数 0

下面的最小示例显示了这个问题:

代码语言:javascript
复制
#include <math.h>
#include <iostream>

int main()
{
   double a = log10(1/200);
   double b = log10(0.005);

   std::cout << "The value of a is " << a << " and b is " << b << std::endl;
}

我使用g++编译程序:

代码语言:javascript
复制
g++ -o math math.cpp
./math

程序的输出是:

代码语言:javascript
复制
The value of a is -inf and b is -2.30103

C也会发生同样的情况:

代码语言:javascript
复制
#include <math.h>
#include <stdio.h>

int main()
{
   double a = log10(1/200);
   double b = log10(0.005);

   printf("The value of a is %f and b is %f\n", a, b);
}

我用gcc编写了程序:

代码语言:javascript
复制
gcc -o math math.c -lm
./math

产出再次是:

代码语言:javascript
复制
The value of a is -inf and b is -2.301030

这两种情况的答案都应该是-2.30103。有人能向我解释一下发生了什么事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 21:33:10

1/200正在执行整数除法,这是0,所以您正在执行log10(0),它为您提供-inf。尝试将其更改为log10(1.0/200.0) (或者其中只有一个应该需要小数点)来告诉编译器进行浮点除法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53180325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档