jms*_*980 2 c math numbers fixed-point decimal
我试图声明一个只有1位小数的变量eLon,这样如果我有代码:
elon=359.8
printf("eLon = %f\n",eLon);
Run Code Online (Sandbox Code Playgroud)
并且输出将是
eLon = 359.8
Run Code Online (Sandbox Code Playgroud)
但是我得到的输出是:
eLon = 359.7999999.
Run Code Online (Sandbox Code Playgroud)
我怎么知道我可以修改printf以便它是:
printf(eLon is %0.1f\n",eLon);
Run Code Online (Sandbox Code Playgroud)
获得理想的结果.这不是我想要做的.我只是希望变量本身只有一个小数位,所以它等于359.8而不是359.7999999,因为这对我所做的任何计算都很重要.你知道我应该如何修改我的代码以获得所需的结果.我尝试过做其他查询中的建议,但它没有用于例如代码:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main()
{
int endLonn;
float endLon,eLon;
endLon=359.8;
endLonn=359.8*10;
printf("%d is endLonn\n",endLonn);
eLon= endLonn / 10;
printf("elon is %f\n",eLon);
}
Run Code Online (Sandbox Code Playgroud)
给我输出:
elon is 359.00000000
Run Code Online (Sandbox Code Playgroud)
这也不是我想要的.我想elon是359.8.如果你能帮助我调整我的代码,以获得理想的结果,那就太棒了.感谢您的时间.
您可以使用定点算法,而不是试图欺骗double或float和printf.在您的示例的特定情况下,您将以0.1s的原始值表示变量:
int in_10s;
in_10s=3598;
printf("My fixed point variable "
"represents %d.%01d value\n",
in_10s/10, abs(in_10s % 10));
Run Code Online (Sandbox Code Playgroud)
在n个小数位的一般情况下,printf的格式应为%d.%0 n d,其中n = log_10(scaling_factor ^ -1),并且缩放因子的解释与此类似.
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |