我试图在我的程序中编写日志功能。我在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。 为什么这段代码的值不正确?
答案 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
标题: