c语言中,如何取出double类型数的每一位到一个数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中,如何取出double类型数的每一位到一个数组?相关的知识,希望对你有一定的参考价值。

例如123456789876,是一个12位的double型数,如何取出每一位数到数组a[12]?

你是说char型的吗?如果是的话:sprintf(s,"%lf",a);s是你开的数组,a是double。这样就把a写到s中了,不懂再问,写到int数组只要训话或者还有函数。
具体代码:
#include<stdio.h>
#include<iostream>

using namespace std;

int main()

char s[12];
double a=123456789876;
sprintf(s,"%lf",a);
printf("%s",s);
return 0;

快点采纳吧……也不知道你懂了没有……
参考技术A

1、直接用数转换到字符串的方法即可。sprintf(s,"%lf",a);s是字符数组,a是double。这样就把a写到s中了。
2、例程:

#include<stdio.h>
#include<iostream>
using namespace std;
int main()

char s[12];
double a=123456789876;
sprintf(s,"%lf",a);
printf("%s",s);
return 0;

参考技术B

#include <stdio.h>
main()

double a=123456789;
long int b;
int i,array[9];
b=(long int)a;
for(i=8;i>=0;i--)

array[i]=b%10;
b=b/10;

for(i=0;i<9;i++)
printf("%d ",array[i]);
printf("\\n");


参考技术C 你先把123456789876写到一个字符数组中,然后它就任你操作了。。。。。。。。。。 参考技术D 如果知道整数的位数与小数的位数的话就很简单了啊

C/C++取出变量的每一位的值(第一次知道还有QBitArray)

前写程序最多也只是字节级别操作,用char和memcpy进行一系列内存操作。此次一个sdk,其状态值直接是每位一个标示,所以需要取出每位进行操作。当然CPP也有丰富的位运算操作,但是虽然也学过,知道意思,但是实际却几乎没用过。这次只能动用它了。

第一种方法:思路就是全部用位与,这样就能取出来每一位是否为1。直接上代码吧,反正看了也就理解了。

1 uint j = 1;
2 for (uint k = 0;k < sizeof(uint) * 8;(j = j<<1),k++){
3     std::cout << "The " << k << " bit is :" << (i&j)  << std::endl;
4 }

这是取一个无符号整数的,当然其他类型一样的、、

第二种方法,就是动用STL,CPP处理方便的确方便多了。有伟大的bitset

其构造函数就可以直接帮你取出值放到bitset中,其支持ullong类型还有string类型。

其也能直接转换为string类型。缺点是其大小必须在编译器就指定。

只是注意:在bitsit中取出的位置和转换后的string取出的方向是不一样(个人测试得出:bitset是从右向左,string是从坐向右)。

在Qt中也有一个处理位的类:QBitArray

这个类是可以更改大小的,用resize()去设定新的大小。只是这个类只能你自己一个位,一个位的去赋值(QBitArray 是从左向右方向的)。

QBitArray 和bitset都重载了 &,~,| ,^这些位运算符号。

下面给个都用的例子:(注意bitset[ n] 和 string[n] 取值的方向不一样。 )

01 #include <QCoreApplication>
02 #include <QVariant>
03 #include <QBitArray>
04 #include <QDebug>
05 #include <bitset>
06 #include <iostream>
07  
08 int main(int argc, char *argv[])
09 {
10     QCoreApplication a(argc, argv);
11     uint i = 200;
12  
13     QBitArray bits;
14     bits.resize((sizeof(uint) * 8));
15  
16     uint j = 1;
17     for (uint k = 0;k < sizeof(uint) * 8;(j = j<<1),k++){
18         bits.setBit(k,(i&j));
19     }
20  
21     qDebug() << "QBitArray bits :" << bits;
22     std::bitset<sizeof(uint) * 8> bit(i);
23     std::cout << "std::bitset bit : " << bit << std::endl;
24     std::string str = bit.to_string();
25     std::cout << "std::bitset bit.to_string : " << str << std::endl;
26     std::cout << "std::bitset bit at 3 : " << bit[3] << std::endl;
27     std::cout << "std::string str at 3 : " << str.at(3) << std::endl;
28     qDebug() << "QBitArray bits at 3 :" << bits.at(3);
29  
30     return a.exec();
31 }

 

其输出结果为:

技术分享

http://www.dushibaiyu.com/2015/07/cpp_get_bit_value.html

以上是关于c语言中,如何取出double类型数的每一位到一个数组?的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程 递归方式实现打印一个整数的每一位

C/C++取出变量的每一位的值(第一次知道还有QBitArray)

快速访问内置类型的每一位字节

C语言判定指针类型

用c++编写程序:输入一个自然数,将该数的每一位数字按反序输出。

数的每一位平方和