如何在c ++中编写日志函数

时间:2016-02-04 05:26:26

标签: c++ function

我试图在我的程序中编写日志功能。我在cplusplus.com上找到了这个:

/* log example */
#include <stdio.h>      /* printf */
#include <math.h>       /* log */

int main ()
{
  double param, result;
  param = 5.5;
  result = log (param);
  printf ("log(%f) = %f\n", param, result );
  return 0;
}

这将计算5.5的日志为:1.704708。 当我将5.5的日志放入我的计算中时,我得到:.740362。 为什么这段代码的值不正确?

2 个答案:

答案 0 :(得分:5)

cmath 日志,基数为10 ,等于0.740362。

您正在寻找自然日志功能,即。 base e

使用math.h标头,而不是std::log (5.5); // Gives natural log with base e std::log10 (5.5); // Gives common log with base 10 标头用于自然日志。

function generateTollCheckDigit($barcode){
    $productNo  = 0;
    $multiplier = 3;

    $barcodeArr = str_split(strrev($barcode));

    foreach($barcodeArr as $char){

        if(is_numeric($char)){
            $digit = $char;
        }else{
            $digit = ord(strtoupper($char)) - ord('A');
        }

        $productNo += $digit * $multiplier;

        $multiplier = $multiplier == 3 ? 1 : 3;
    }

    $checkdigit = 10 - ($productNo % 10);

    return $checkdigit == 10 ? 0 : $checkdigit;
}

了解更多here

答案 1 :(得分:4)

要跟进Madhav Datt所说的内容,如果您正在寻找自然日志,那么请使用cmath标题:

  • std::log()计算arg的自然(基数e)对数。
  • std::log10()计算arg的公共(基数为10)对数。