The below works as a double, but not as a float. I can't figure out where to put the f to make float work.
int main()
{
double TwelveRootTwo{ pow(2,1 / 12.00) };
std::cout << "TwelveRootTwo = " << TwelveRootTwo << '\n';
}
The below works as a double, but not as a float. I can't figure out where to put the f to make float work.
int main()
{
double TwelveRootTwo{ pow(2,1 / 12.00) };
std::cout << "TwelveRootTwo = " << TwelveRootTwo << '\n';
}
In what way does it not work when you use float
?
Replace double with float.
Since this is an Arduino forum, are you using a platform where float
and double
are different? On ESP32, where they are, consider
auto flo = pow(2, (1/12.0f));
auto dou = pow(2, (1/12.00));
Serial.println(flo, 15);
Serial.println(dou, 15);
Serial.println(1/12.0f, 15);
Serial.println(1/12.00, 15);
Serial.println(sizeof(flo));
Serial.println(sizeof(dou));
auto ff3 = pow(2.0f, (1.0f/12.0f));
Serial.println(sizeof(ff3));
Serial.println(ff3, 15);
prints
1.059463096183108
1.059463094359295
0.083333335816860
0.083333333333333
8
8
4
1.059463143348694
This^^
I knew I needed to add an f to something... just wasn't sure what.
float TwelveRootTwo{ pow(2.0f,1.0f / 12.0f) };
Thanks!
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.