小编cle*_*ong的帖子

如何判断双精度浮点数是否可以安全存储为单精度浮点数?

可能重复:
实数 - 如何确定是否需要浮点数或双精度数?

我正在尝试检查从double到float的转换是否会导致精度损失.显然,我可以进行转换并将float转换回double并将其与原始值进行比较.我很好奇是否有更直接的方式.

c c++ floating-point

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

2
推荐指数
1
解决办法
129
查看次数

在C中进行谓词赋值的更好方法是什么?

我要做的是避免以下情况:

if(*ptr > 128) {
   number = 5;
}
Run Code Online (Sandbox Code Playgroud)

当没有关于分支将走哪条路的明确模式时,这样的代码表现不佳.我想出的是:

int arr[] = { number, 5 };
int cond = *ptr > 128;
number = arr[cond];
Run Code Online (Sandbox Code Playgroud)

根据我的测试,当输入是随机的时,它的运行速度是条件的两倍.我想知道的是,是否有更聪明的方法来做到这一点,也许使用按位运算符.

c

2
推荐指数
1
解决办法
100
查看次数

是否可以将包含逗号的 C 宏字符串化?

说我有这个:

#define CAKE     , something
Run Code Online (Sandbox Code Playgroud)

我想要的结果是", something". 可以做到吗?

以下在 gcc 中不起作用:

#define MAKE_STRING(x)  #x
#define STRING(x)       MAKE_STRING(x)

STRING(CAKE)
Run Code Online (Sandbox Code Playgroud)

编译器认为我将两个参数传递给 MAKE_STRING() 并阻止。

c c-preprocessor

2
推荐指数
1
解决办法
375
查看次数

这个Python类看起来很愚蠢吗?

我正在尝试将我用PHP编写的东西移植到Python中,主要是为了更好地学习语言.有问题的代码是SWF解析器.在PHP中,我将所有数据结构声明为类.我试图在Python中做同样的事情,但似乎没有一种明确的方式来声明一个类变量.所以我最终得到了许多看起来像这样的类:

class SWFRGBA(object):
    red = 0
    green = 0
    blue = 0
    alpha = 0
Run Code Online (Sandbox Code Playgroud)

Pythoners真的写这样的东西吗?

[编辑]

让我发布一些实际代码来说明问题.下面的函数读取SWF文件中的矢量形状.readUB(),readSB()读取一定数量的位,解释它们无符号或有符号.有时,给定字段所需的位数本身是从比特流中读取的.可能会出现三种类型的记录:直边,二次曲线或样式更改.样式更改记录可能会移动笔位置,更改线型索引,更改两个填充样式索引之一或替换样式数组.

protected function readShapeRecords($numFillBits, $numLineBits, $version, &$bytesAvailable) {
    $records = array();
    while($bytesAvailable) {
        if($this->readUB(1, $bytesAvailable)) {
            // edge
            if($this->readUB(1, $bytesAvailable)) {
                // straight
                $line = new SWFStraightEdge;
                $line->numBits = $this->readUB(4, $bytesAvailable) + 2;
                if($this->readUB(1, $bytesAvailable)) {
                    // general line
                    $line->deltaX = $this->readSB($line->numBits, $bytesAvailable);
                    $line->deltaY = $this->readSB($line->numBits, $bytesAvailable);
                } else {
                    if($this->readUB(1, $bytesAvailable)) {
                        // vertical
                        $line->deltaX = 0;
                        $line->deltaY = $this->readSB($line->numBits, $bytesAvailable);
                    } …
Run Code Online (Sandbox Code Playgroud)

python

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

标签 统计

c ×3

assembly ×1

c++ ×1

c-preprocessor ×1

floating-point ×1

python ×1

x86 ×1