C++中float是怎么存储数据的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中float是怎么存储数据的?相关的知识,希望对你有一定的参考价值。

unsigned 和 float 都是占用4个字节,unsigned 可以表示0~(2^32-1)这个很好理解,float能表示-10^38~10^38,小数部分可以保留5位,精确度可以达到10^-45,应该是前3字节储存有效数据,后一字节储存科学计数法位数。请问具体是怎么存储的,38并不是一个很好的数啊。double又怎么存到308次方的。

float:符号位占1byte,阶码(就是指数)占8byte,尾数占23byte,总长32byte,也就是4个字节。double:符号位占1byte,阶码(就是指数)占11byte,尾数占52byte,总长64byte,也就是8个字节。 参考技术A 浮点型的数据类型

在C++中如何读取文本中的数据存储为数组变量?

在C++中如何读取文本中的数据存储为数组变量?
文本中有两行
20100416-067 1,2,3,4,5
20100416-066 2,3,4,5,6
要求把后面的1,2,3,4,5和2,3,4,5,6存储到数组,用C++怎么编写,各位大哥,我是新手,请教一下怎么写,或者直接写出来做为参考!

以下代码 VS2010 编译通过,运行结果正常

关键运用:std::fstream 标准库对象;std::stringstring 标准库对象

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

int main()

char *path = "S:/1.txt"; // 这里填写你的文件路径,用‘/’或者‘\\’
std::ifstream ifile(path); // 打开文件
std::string line; // 用于存放从文件读取的每一行

int arr1[5], arr2[5]; // 分别存放读取到的 1,2,3,4,5 和 2,3,4,5,6

if (ifile) // 检查文件是否打开成功

char comma; // 用于过滤掉 1,2,3,4,5 中的‘,’
std::string pfx; // 用于过滤掉每行前面的字符串

getline(ifile, line); // 读取文件第一行
std::istringstream instr1(line); // 将第一行绑定给 istringstream 对象

instr1 >> pfx; // 过滤第一行前面的字符串
for (int x = 0; x != 4; ++x)

instr1 >> arr1[x] >> comma;

instr1 >> arr1[4]; // 读取数据存入数组,并过滤掉‘,’

getline(ifile, line); // 第二行读取开始,步骤同上
std::istringstream instr2(line);
instr2 >> pfx;
for (int x = 0; x != 4; ++x)

instr2 >> arr2[x] >> comma;

instr2 >> arr2[4];

else

std::cout << "打开文件错误!" << std::endl;
return EXIT_FAILURE;


// 下面是显示读取结果
for (int x = 0; x != 5; ++x)

std::cout << arr1[x] << " ";

std::cout << std::endl;

for (int x = 0; x != 5; ++x)

std::cout << arr2[x] << " ";

std::cout << std::endl;

return 0;


=========

运行结果:

1 2 3 4 5
2 3 4 5 6
Press any key to continue . . .
参考技术A 楼上的大叔真勤劳,反正注意筛去字符串前的和后面的逗号即可。

以上是关于C++中float是怎么存储数据的?的主要内容,如果未能解决你的问题,请参考以下文章

请问浮点型数据在计算机是怎么存储的

float_浮点数存储结构

C++ 整理

float和double型分别怎么存储

在C++中如何读取文本中的数据存储为数组变量?

如何在数据库中存储精确的十进制值