Part Number:LINUXSDK-OMAPL138
float f[100] ;数组。如何按照和C语言标准一样,按照6位小数位打印?
Shine:
能否贴一下您的打印指令以及打印结果?
,
Thomas:
以下分别是代码和执行结果。我们有效小数位是6位,一直打印4位。
void uchar_to_float_matrix(float (*dest)[col], unsigned char *src, int len) {int i, j, k;float_union float_tmp;int row = len / (4 * col);for (i = 0, k = 0; i < row; i++) {for (j = 0; j < col; j++) {float_tmp.float_byte.low_byte = src[k];float_tmp.float_byte.mlow_byte = src[k + 1];float_tmp.float_byte.mhigh_byte = src[k + 2];float_tmp.float_byte.high_byte = src[k + 3];dest[i][j] = float_tmp.float_val;k = k + 4;System_printf("[%d][%d]: %f, %f\n", i, j, dest[i][j], float_tmp.float_val);}} }[ 237419.427] [6][1697]: 0.0001, 0.0001[ 237419.428] [6][1698]: 0.0000, 0.0000[ 237419.428] [6][1699]: -0.0000, -0.0000[ 237419.429] [6][1700]: 0.0000, 0.0000[ 237419.429] [6][1701]: 0.0003, 0.0003[ 237419.430] [6][1702]: 0.0001, 0.0001[ 237419.430] [6][1703]: -0.0002, -0.0002[ 237419.431] [6][1704]: -0.0000, -0.0000[ 237419.431] [6][1705]: -0.0004, -0.0004[ 237419.432] [6][1706]: -0.0003, -0.0003[ 237419.432] [6][1707]: 0.0000, 0.0000[ 237419.433] [6][1708]: -0.0000, -0.0000[ 237419.433] [6][1709]: 0.0001, 0.0001[ 237419.434] [6][1710]: -0.0002, -0.0002[ 237419.434] [6][1711]: 0.0000, 0.0000[ 237419.435] [6][1712]: 0.0001, 0.0001[ 237419.435] [6][1713]: 0.0002, 0.0002[ 237419.436] [6][1714]: 0.0001, 0.0001[ 237419.436] [6][1715]: 0.0001, 0.0001[ 237419.437] [6][1716]: -0.0002, -0.0002[ 237419.437] [6][1717]: 0.0000, 0.0000[ 237419.438] [6][1718]: 0.0000, 0.0000[ 237419.438] [6][1719]: -0.0001, -0.0001[ 237419.439] [6][1720]: -0.0000, -0.0000[ 237419.439] [6][1721]: -0.0001, -0.0001
,
Shine:
在ccs里查看变量的话,显示的是6位小数吗?
,
Thomas:
我不是用的CCS,没用过。这些数原始值都是6位小数,是arm给到dsp的,arm端打印正常,到DSP这边只能打印出前4位。
,
Shine:
Thomas said:我不是用的CCS,没用过。
我们一般用ccs编译调试dsp代码的。如果不用ccs的话,请问c674x dsp核的代码是什么软件开发编译的?
,
Thomas:
RTOS SDK文档里有说明,命令行方式,使用makefile编译。
,
Shine:
如果直接定义一个6位小数的float常数,dsp上能够用system_printf打印吗?
,
Thomas:
早就这么试过了,打印都是4位小数,比如:
代码:
float a = 1.234567;
System_printf("%f\n", a);
System_printf("%.6f\n", a);
结果都是 1.2345所以我想知道为啥打印出来的是4位小数?
,
Thomas:
因为我们算法使用的数本来就很小了,再丢掉几位感觉就不能用了。
,
Shine:
已升级到e2e,请关注帖子的回复。https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1263241/omap-l138-how-to-print-6-fractional-floating-point