这个问题可能是因为你使用了整数数据类型而不是浮点数数据类型。log函数返回的是浮点数,如果你将其赋值给一个 long 类型的变量,就会出现精度问题,产生不正确的结果。
你可以尝试将数据类型改为 float,或者将计算过程中的 long 类型变量转换为 float 数据类型,以避免溢出问题。例如:
float levelDb = 0.0;
levelDb = 20 * log10(30 / 220.0) + 60;
display.print("Decibel: ");
display.println(levelDb);
其中,log10函数是将一个数取以10为底的对数,这可以避免精度问题产生。在计算 30/220 时,将其中一个数改为 220.0 可以将其转换为浮点数类型。
这个问题可能是因为你使用了整数数据类型而不是浮点数数据类型。log函数返回的是浮点数,如果你将其赋值给一个 long 类型的变量,就会出现精度问题,产生不正确的结果。
你可以尝试将数据类型改为 float,或者将计算过程中的 long 类型变量转换为 float 数据类型,以避免溢出问题。例如:
float levelDb = 0.0;
levelDb = 20 * log10(30 / 220.0) + 60;
display.print("Decibel: ");
display.println(levelDb);
其中,log10函数是将一个数取以10为底的对数,这可以避免精度问题产生。在计算 30/220 时,将其中一个数改为 220.0 可以将其转换为浮点数类型。
举报