我有一个程序,它运行在两个处理器上,其中一个不支持浮点运算。所以,我需要在处理器中使用定点执行浮点计算。为此,我将使用浮点仿真库。
我需要首先在支持浮点的处理器上提取浮点数的符号、尾数和指数。所以,我的问题是如何得到单精度浮点数的符号、尾数和指数。
按照此图的格式,
void getSME( int& s, int& m, int& e, float number )
{
unsigned int* ptr = (unsigned int*)&number;
s = *ptr >> 31;
e = *ptr & 0x7f800000;
e >>= 23;
m = *ptr & 0x007fffff;
}
找出直接支持浮点数的CPU上使用的浮点数的格式,并将其分解为这些部分。最常见的格式是IEEE-754。
或者,您可以使用一些特殊函数来获得这些部件(double-frexp(double-value,int*exp)
和<代码>双ldexp(双x,int-exp)
),如此答案所示。
另一种选择是将
%a
与printf()
一起使用。
我的建议是坚持规则0,如果这足够的话,不要重做标准库已经做过的事情。看看math. h(标准C中的cma)和函数frexp、frexpf、frexpl,它们在其意义和指数部分打破了浮点值(双精度、浮点或长双精度)。要从意义中提取符号,您可以使用signbit,也可以在math. h/cma中使用,或者复制符号(仅限C11)。一些不同语义学的替代方案是modf和ilogb/calbn,可在C11中使用;http://en.cppreference.com/w/cpp/numeric/math/logb比较它们,但我在留档中没有找到所有这些函数在 /-inf和NaN中的表现。最后,如果您真的想使用位掩码(例如,您迫切需要知道确切的位,并且您的程序可能具有不同表示形式的不同NaN,并且您不信任上述函数),至少通过使用Float. h中的宏使所有内容独立于平台/cft。
我认为最好是用工会来做演员,这更清楚。
#include <stdio.h>
typedef union {
float f;
struct {
unsigned int mantisa : 23;
unsigned int exponent : 8;
unsigned int sign : 1;
} parts;
} float_cast;
int main(void) {
float_cast d1 = { .f = 0.15625 };
printf("sign = %x\n", d1.parts.sign);
printf("exponent = %x\n", d1.parts.exponent);
printf("mantisa = %x\n", d1.parts.mantisa);
}
示例基于http://en.wikipedia.org/wiki/Single_precision
我试图得到浮点数的尾数(只是为了学习),但它没有按预期工作。 比如说5.3的尾数是53,对吗?我尝试了以下代码: 它打印了2726298。它不应该去掉指数位并留下53吗?我尝试了很多事情,但总是这样。我做错了什么?
我有一个函数,它将被传递一个空指针。此指针可以是int、char或float。我知道通过关联值将传递给我的数据类型。例如,下面是我的函数的外观: 如果传递给我的void指针最初是一个char类型,我将它转换回char类型,有没有办法确定与该指针关联的字节数?例如,如果我的函数按如下方式调用: 我将void指针转换回char指针 有没有什么方法可以计算出使用了多少字节?我可能需要搜索空字符并计算它与
我有像0.152545这样的浮点值,我只想要0.1f。< br >这怎么可能..< br >通过使用String,我获得了字符串值。下面的代码显示了结果。 这给了我字符串值,如0.1f,但我只想要浮点值,如0.1f。
我的java程序中有一些浮点变量: 在我的计算中,浮点变量小数点后的位数会增加或减少,以保持精度。例如,在一些计算系统之后。出来println(var1);可打印: 或 或 我想将这些值四舍五入到小数点后的3位,并删除后续的小数位数,以便对float进行四舍五入,如下所示: 据我所知,数字格式和字符串。format()以格式化字符串的形式返回输出。如何将输出作为四舍五入浮点,以便在计算中进一步使用
问题内容: 我从属性文件中获取了int,float,boolean和string。一切都已加载到属性中。目前,我正在解析值,因为我知道特定键的期望值。 设置这些常量值的更好方法是什么,如果我不知道什么可能是键的原始值数据类型。 属性文件。messassge.properties Constant.java 问题答案: 如果您拥有一类配置值(例如您的类),并且想要从配置(属性)文件中加载所有值,则可
问题内容: 如何在Python中转换类似float的字符串? 问题答案: 只需删除带有: