C ++打印数字带小数

问题描述

我有一个连接到RaspBerry Pi的GPS天线,并尝试使用gps.h库通过C ++获取其坐标。在那里,纬度定义为两倍。现在,当我尝试使用printf将其打印出来时,%d的输出为5,%f的输出为0.000000。我只是想获得纬度背后的确切数字。

我住在瑞士,这里的纬度约为47度。我认为纬度存储为4.7 ...,可能会发生一些舍入,因此输出为5。

谢谢大家

编辑:

struct gps_data_t gps_d;
printf("%d\n",gps_d.fix.latitude);

解决方法

我看到gps_d.fix.latitude是一个双精度值,您必须使用%f或%lf才能使用printf进行打印。如果mode> = 2,它也表示有效,因此请检查您的代码。如果%f显示的是0.0,则该变量值实际上可能包含0.0。

double latitude;    /* Latitude in degrees (valid if mode >= 2) */

但是,如果您使用C ++编程,则还可以按照以下方式打印:

std::cout << gps_d.fix.latitude << std::endl;
,

我同意贾伯沃基的观点。您可以尝试阅读NMEA来检查GPS是否正常工作。

cat /dev/<GPS Serial Port>