相关疑难解决方法(0)

比较它们的位表示中的浮点数

假设我想要一个带有两个浮点数 (xy)的函数,我想不使用它们的float表示来比较它们,而是使用它们作为 32 位的按位表示unsigned int。也就是说,像这样的数字-495.5具有位表示0b110000111110010111000000000000000xC3E5C000作为float,并且我有一个unsigned int具有相同位表示(对应于十进制值3286614016,我不在乎)。有没有什么简单的方法可以让我<=只使用它们各自unsigned int对应的信息中包含的信息来对这些浮点执行这样的操作?

c c++ floating-point objective-c

8
推荐指数
1
解决办法
3109
查看次数

是否有可能在cpp中检查零下0?

这可能是一个愚蠢的问题,但我真的有一个0和0的问题.

我正在计算函数的斜率,并且根据向量(向右或向左),它是0或-0.

是否可以执行if条件并找出斜率是0还是-0?执行以下操作无效.

if ( slope == 0.0f )
std::cout << "direction vector towards right";
else if ( slope == -0.0f )
std::cout << "direction vector towards left"
Run Code Online (Sandbox Code Playgroud)

我粗略地没有提供工作源代码,因为我认为这与问题无关.对上述内容的简单答案将有所帮助.

c++

4
推荐指数
1
解决办法
147
查看次数

如何区分零和负零?

我正在实现该printf()功能。几乎所有东西都可以正常工作,但是当称为时,我遇到了一个问题ft_printf("%f", -0.0)。我的程序输出0.0而不是-0.0。我不能使用任何库。

我检查负性的条件就是“ x <0”,这不包括我的问题。我发现了区分零和负零的有希望的解决方案。

这似乎可以解决我的问题:

double a = -0.0;
printf("%d\n", (*((long *)&a) == 0x8000000000000000));
Run Code Online (Sandbox Code Playgroud)

我希望打印该程序,1但是在我的程序中,当它在输出的代码中执行时0。我有一个问题理解的部分是如何*((long *)&a)做到的:使一个数字可与十六进制对应的数字相提并论。

c floating-point binary hex

0
推荐指数
1
解决办法
104
查看次数

标签 统计

c ×2

c++ ×2

floating-point ×2

binary ×1

hex ×1

objective-c ×1