C 无法打印右浮点值

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

我有我的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 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和双 C++中的文字可以有自己的地址。@谢谢,精度很重要,我已经做了更改。