double数据转换成char字符串的函数——dtostrf()用法

       最近做了一个机电一体化设备的项目,主要任务是完成模拟量数据采集、步进电机和直流电机驱动控制、液晶屏显示等。采用AVR单片机作为控制核心, Atmel Studio 6.2集成开发环境编写单片机程序。在项目中需要把double型数据转换成char型字符串。本想自己写数据转换程序,写之前先上网看看前人们有什么经验,一番搜索发现Atmel Studio 中自带的dtostrf()函数可以实现这一功能。

       Atmel Studio 的帮助里对dtostrf()函数的介绍如下:

       函数原型:

       char * dtostrf(
                double__val,
                signed char__width,
                unsigned char__prec,
                char *__s)

       函数介绍:

       参数“__val”:需要转换的double型数据;

       参数“s”:转换成的字符串首地址;

       参数“__width”:输出字符串的总位数;

       参数“__prec”:输出字符串小数点后的位数


       函数dtostrf()可以把通过val传递的double型数据转换成其ASCII形式并存储在s中。函数调用时要保证s具有足够的存储空间。最终转换结果的格式为“[-]d.ddd”。width”为输出字符串的总长度(包括‘.’和数据前边可能存在的符号)。“prec”决定转换结果保留小数点后的位数。“width”为signed型的数据,负数代表从左端开始计数,也就是从高位开始计数,正数代表从右端计数,也就是从低位段开始计数。函数最终返回指向“s”的指针。


       double数据转换成char字符串的函数——dtostrf()用法_第1张图片


       编写了如上的测试程序,double型数据-0.526转换成字符串m_min_char[],设置转换结果为4位数其中2位小数。烧写进单片机后,液晶屏上显示“-0.53”。这说明在转换时函数还会对double型数据进行45入处理。

你可能感兴趣的:(【C/C++】,dtostrf,函数)