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

时间:2016-03-18 10:48:59

标签: c floating-point

我需要将Long a Float Value转换为Character Array,我需要这样做,因为Device API只接受这样的调用

enter image description here

我有这样的东西200.56866我需要一个像200.56这样的值。

我试过

    char buf1[sizeof(int)*3+2]="";
    snprintf(buf1, sizeof buf1, "%f", balance1);

但转换会产生一些随机值。我怎么能正确地做到这一点?

编辑:这个问题与单独截断十进制值无关。它主要涉及将float复制到char数组的问题。

1 个答案:

答案 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);