TI中文支持网
TI专业的中文技术问题搜集分享网站

LINUXSDK-OMAPL138: DSP打印float数据类型,只又4位小数是怎么回事,能不能按照6位小数打印?

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

赞(0)
未经允许不得转载:TI中文支持网 » LINUXSDK-OMAPL138: DSP打印float数据类型,只又4位小数是怎么回事,能不能按照6位小数打印?
分享到: 更多 (0)