将长浮点值剪切为2个小数点并复制到字符数组

我需要将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数组的问题。

尝试将第二行更改为snprintf(buf1, sizeof buf1, "%.2f", balance1); 。 另外,为什么要声明用该特定表达式分配缓冲区的存储量?

EDIT @LưuVĩnhPhúc在下面的评论中提到我的原始答案中的格式说明符将舍入而不是截断,因此根据如何在不使用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);