C语言中如何将double型数据转换为数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中如何将double型数据转换为数组?相关的知识,希望对你有一定的参考价值。
我需要double型数据的每一位数字(包括小数)。听说将数据转换为字符串就能够做到
思路是:先将Double型的数字整数部分变为整型数字一一取到数组中去(用循环整除可以做到,比如double i=123.456,就可以先把整数部分用j=(int)i强制类型转换取出放入整型变量j中,再依次取到数组a中
(a[k++]=i%10;i/=10;)
这两句语句就可以做到(不过数字是倒序的,最后输出时要注意)。
再看小数部分,同理,但不用除法,而用乘法,先去除整数部分
(j=j-(int)j;)
再将小数部分不断的乘10取整,取一位去除一位,存入另一数组:
l=(int)(j*10);
b[k++]=l;
j=j*10-l;...直到j*10==0为止
这样就可以把j中的数按位取到了两个数组中,接下去只要将两数组合并到C数组中去,或者依次输出整数部分和小数部分,中间别忘加小数点,输出成字符在C语言里可以这样:
printf("%c",a[i]+\'0\');
printf(".");
printf("%c",b[i]+\'0\');
以上就是我的算法,请高手看了不要笑话,希望能给楼主带来启发。 参考技术A 楼上的思路基本正确。但事实上VC++中已经有集成该运算的函数。分别是atof 和_pcvt.
#include <string.h>
1、atof()
该函数将数字字符串转化为浮点型数值。原型如下:
double atof(const char *)
const char *是要转化的数字字串,返回的值为浮点数值。
2、_gcvt()
该函数跟atof()正好相反,用来把数值转化为数字字符串。原型如下:
char *_gcvt(double,int ,char*)
参数意义如下:
double:被转换数据。
int:数字字符串长度。(通常可以是char*长度。)
char*:转换后的数字字符串。
例:
我们要把3.14换成字符串。
#include <string.h>
char a[5]; /*注意:内存空间要比3.14的数位大*/
_gcvt(3.14,4,a);
那么在a里面,a[1]='3',a[2]='.',a[3]='1',a[4]='4' ,a[5]='\0';
这就是你想要的结果。
但是在char[]里面存储的是字符而不是数字。
如: '0'这个字符不等于0,而是48。‘1’是49。。
也就是每个字符-48就可得其值。
剩余的转化过程就请你自己编写。非常简单。 参考技术B 思路是:
先将Double型的数字整数部分变为整型数字一一取到数组中去(用循环整除可以做到,比如double i=123.456,就可以先把整数部分用j=(int)i强制类型转换取出放入整型变量j中,再依次取到数组a中
(a[k++]=i%10;i/=10;)
这两句语句就可以做到(不过数字是倒序的,最后输出时要注意)。
再看小数部分,同理,但不用除法,而用乘法,先去除整数部分
(j=j-(int)j;)
再将小数部分不断的乘10取整,取一位去除一位,存入另一数组:
l=(int)(j*10);
b[k++]=l;
j=j*10-l;...直到j*10==0为止
这样就可以把j中的数按位取到了两个数组中,接下去只要将两数组合并到C数组中去,或者依次输出整数部分和小数部分,中间别忘加小数点,输出成字符在C语言里可以这样:
printf("%c",a[i]+'0');
printf(".");
printf("%c",b[i]+'0');
以上就是我的算法,请高手看了不要笑话,希望能给楼主带来启发。
^_^
arduino 中如何将字符串型转换为float型?
arduino 中如何将字符串型转换为float型?我要在串口输入字符串,比如“12.34”,要把它转换为float,给连接电机的输出端口作为电机速度。arduino 中如何将字符串型转换为float型?我要在串口输入字符串,比如“12.34”,要把它转换为float,给连接电机的输出端口作为电机速度。
高手指教啊
float a=s.toFloat(); 参考技术B #include "stdlib.h"
float f;
char* b="12.34";
f=atof(b); 参考技术C 你试试看,
定义一个变量B
串口输入的是A,字符型
加一句:B=(float)A;
我也没试过。
以上是关于C语言中如何将double型数据转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章