我正在开发一个需要将32位数转换为十进制数的程序 .
我从输入中得到的数字是一个32位数字,表示为浮点数 . 第一位是符号,接下来的8位是指数,其他23位是尾数 . 我在C中使用该程序 . 在输入中,我将该数字作为 char[]
数组,然后我创建一个新的 int[]
数组,其中存储符号,指数和尾数 . 但是,当我试图将它存储在某种数据类型中时,我对尾数有问题,因为我需要将尾数用作数字,而不是数组: formula=sign*(1+0.mantissa)*2^(exponent-127)
.
这是我用来存储尾数的代码,但程序仍然会得到错误的结果:
double oMantissa=0;
int counter=0;
for(counter=0;counter<23;counter++)
{
if(mantissa[counter]==1)
{
oMantissa+=mantissa[counter]*pow(10,-counter);
}
}
mantissa[]
是一个 int
数组,我已经从 char
数组转换了尾数 . 当我从 formula
获取值时,它必须是二进制数,我必须将其转换为十进制,所以我将得到数字的值 . 你可以帮我存储23位的尾数吗?并且,我不能使用像_2419754这样的函数将32位数字直接转换为二进制数 . 我必须使用 formula
.
3 回答
鉴于所有公式和样本数以及计算器,下面代码的哪一部分很难正确?
输出(ideone):
不久前,我有机会编写了一段类似的代码,您和其他人可能认为这些代码很有用 . 它将表示浮点数的字符串作为程序的第一个参数,并将字符串转换为其 IEEE-754 Single Precision Floating Point 表示及其等效整数值 . 如果您有任何疑问,请查看并告诉我 .
Example Use/Output
在搜索互联网并且无法找到类似功能之后,我编写了这些浮点转换函数 .