我正在编程微控制器atmega168(8位).
我想做的事情如下:
float A = cos(- (2/3) * M_PI);
Run Code Online (Sandbox Code Playgroud)
当然包括math.h(#define M_PI 3.14159265358979323846)
结果,而不是-0.5,我得到1.
我使用串行通信检查结果到我的电脑,我确信它也适用于浮点数,因为如果我设置
A= -0.50;
Run Code Online (Sandbox Code Playgroud)
我收到了正确的结果.
PS.我不能使用双...也因为我没有看到这样做的原因
请帮帮我!
2/3使用整数运算来评估.它的计算结果为0.你的意思是使用浮点除法
float A = cos(-(2.0/3.0) * M_PI);
Run Code Online (Sandbox Code Playgroud)
如果你想要float文字使用f后缀:
float A = cos(-(2.0f/3.0f) * M_PI);
Run Code Online (Sandbox Code Playgroud)
但请注意,M_PI此处展开的宏是双字面值.那是你要的吗?
我认为真正的代码看起来不像这样.如果这真的是你的代码,那么你会写下float A = -0.5f并继续前进.我猜真正的代码有变量.