如何解决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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。