C 无法打印右浮点值
我有我的ZC706板与双臂皮质32位一。我试图在它上面运行一个算法,作为代码的一部分,它有浮点值C 无法打印右浮点值,c,floating-point,arm,C,Floating Point,Arm,我有我的ZC706板与双臂皮质32位一。我试图在它上面运行一个算法,作为代码的一部分,它有浮点值 uint32_t int Ts = 69912; float Ts_pico; Ts_pico = 20*(10^-12)*Ts; printf("Time stamp in picoseconds is %f", Ts_pico); 并打印值4272595456.000000,而不是1.39824*(10^-6) 所以我通过打印测试 printf("The float point value i
uint32_t int Ts = 69912;
float Ts_pico;
Ts_pico = 20*(10^-12)*Ts;
printf("Time stamp in picoseconds is %f", Ts_pico);
并打印值4272595456.000000,而不是1.39824*(10^-6)
所以我通过打印测试
printf("The float point value is %f", 1.39824);
double f = 10^-6;
printf("The flloat point value is %f", f);
很好地打印出了以下值
接下来,当我通过打印进行测试时
printf("The float point value is %f", 1.39824);
double f = 10^-6;
printf("The flloat point value is %f", f);
它打印的值为-14401872.000000
如何解决浮点值问题?您不是想要
10e-12
而是10^-12
10e-12
是一个浮点double
常数,但请注意1e-12
是10
的次幂。您的^
是对XOR运算符的滥用。您不是想要10e-12
而是10^-12
10e-12
是一个浮点double
常数,但请注意1e-12
是10
的次幂。您的^
是对XOR运算符的滥用。^是位XOR运算符,您应该将任何形式的*10^幂替换为aEpower。20*10^-12变为20E-12,10^-6变为1E-6请a)打开所有编译器警告,并阅读它们;b) 读一本关于C的书,你所知道的可能会有更多的空白。^是一个位异或运算符,你应该用*10^幂到aEpower的形式替换任何东西。20*10^-12变为20E-12,10^-6变为1E-6请a)打开所有编译器警告,并阅读它们;b) 读一本关于C的书,你所知道的可能会有更多的差距。10到-12的力量是1e-12
,而不是10e-12
@ericpostphil:的确如此。这不是我第一次计算出一个数量级。小调:在C语言中,它是一个浮点双常量。Literals在C和<代码>双< /代码> C++中的文字可以有自己的地址。@谢谢:精度是重要的,我已经做了改变。12的幂是-<代码> 1E-12< /代码>,不是<代码> 10E-12< /代码>。@ EricPostpischil:确实。这不是我第一次计算出一个数量级。小调:在C语言中,它是一个浮点双常量。C++中的Literals和