我需要将Long a Float Value转换为Character Array,我需要这样做,因为Device API只接受这样的调用
我有这样的东西200.56866我需要一个像200.56这样的值。
我试过
char buf1[sizeof(int)*3+2]="";
snprintf(buf1, sizeof buf1, "%f", balance1);
但转换会产生一些随机值。我怎么能正确地做到这一点?
编辑:这个问题与单独截断十进制值无关。它主要涉及将float复制到char数组的问题。
答案 0 :(得分:1)
尝试将第二行更改为snprintf(buf1, sizeof buf1, "%.2f", balance1);
。另外,为什么要声明使用该特定表达式分配缓冲区的存储量?
修改强> @LưuVĩnhPhúc在下面的评论中提到我原始答案中的格式说明符将舍入而不是截断,因此基于How to cut decimal off without rounding in C您可以执行以下操作:
float balance = 200.56866;
int tmp = balance1 * 100;
float balance1 = tmp / 100.0;
char buf1[sizeof(int)*3+2]="";
snprintf(buf1, sizeof buf1, "%.2f", balance1);