标签: fixed-point

定点反正弦

有没有人知道(最好是快速)计算4.12固定点角度正弦的方法?(结果是一个圆或度的32768ths)

4.12定点意味着数字是16位并且左移12,所以1.0变为(1 << 12)或4096. 0.5是(0.5 << 12)== 2048等.

algorithm trigonometry fixed-point

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

如何处理带有两个unsigned short的结构,就好像它是unsigned int一样?(在C中)

我创建了一个表示定点正数的结构.我希望小数点两边的数字包含2个字节.

typedef struct Fixed_t {
    unsigned short floor; //left side of the decimal point
    unsigned short fraction; //right side of the decimal point
} Fixed;
Run Code Online (Sandbox Code Playgroud)

现在我想添加两个定点数,Fixed xFixed y.为此,我将它们视为整数并添加.

(Fixed) ( (int)x + (int)y );
Run Code Online (Sandbox Code Playgroud)

但正如我的visual studio 2010编译器所说,我无法在Fixed和之间进行转换int.

这样做的正确方法是什么?

编辑:我不承诺{short floor, short fraction}执行Fixed.

c struct fixed-point

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

指数使用了多少位

我正在编写一些函数,将float/double转换为定点和后退.有没有人知道确定浮点数或双精度指数部分的位数的最佳方法?我希望使用std :: numeric_limits中的东西,但没有运气.

指数部分是由C++标准定义的还是编译器/机器特定的?或者它可以在运行时变化?

c++ floating-point fixed-point

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

Matlab中的不动点

有人可以解释一下吗?

据我所知,它提供的精度较低.是否可以通过使用它获得加速?什么时候使用好?我应该在Matlab编码器中使用它吗?

matlab fixed-point matlab-deployment

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

定点的 Python 十进制上下文

我想用小数点前 3 位和小数点后 2 位的数字进行计算(当然,2 和 3 是可配置的)。我认为通过示例来解释最容易:

0.01 和 999.99 是正数的下限和上限。当然,也有0.00,以及-999.99到-0.01的负数。每两个连续数字之间的距离为 0.01。

7.80 + 1.20 应该是 9.00,而 999.00 + 1.00 应该是 OverflowError。0.20 * 0.40 应该是 0.08,0.34 * 0.20 应该是 0.07(这可以设置一个标志来表明它是四舍五入的,但它不能引发任何异常)。0.34 * 0.01 应为 0.00(与前一个条件相同)。

实际上,我想要从 0 到 99999 的“整数”,只是在第三个数字后面写一个点,乘法时缩小 100 倍,除法时放大 100 倍。应该可以为此找到确切的上下文,对吗?

问题是,我找不到 Emin、Emax、clamp 和 prec 的正确设置来满足我的要求。例如,我尝试将 Emin 和 Emax 设置为 0,但这引发了太多 InvalidOperations。我唯一知道的是四舍五入应该是 ROUND_HALF_EVEN。:-)

python fixed-point decimal exponent

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

在C中声明一个只有2个小数点的变量

我试图声明一个只有1位小数的变量eLon,这样如果我有代码:

elon=359.8
printf("eLon = %f\n",eLon);
Run Code Online (Sandbox Code Playgroud)

并且输出将是

eLon = 359.8
Run Code Online (Sandbox Code Playgroud)

但是我得到的输出是:

eLon = 359.7999999.
Run Code Online (Sandbox Code Playgroud)

我怎么知道我可以修改printf以便它是:

printf(eLon is %0.1f\n",eLon);
Run Code Online (Sandbox Code Playgroud)

获得理想的结果.这不是我想要做的.我只是希望变量本身只有一个小数位,所以它等于359.8而不是359.7999999,因为这对我所做的任何计算都很重要.你知道我应该如何修改我的代码以获得所需的结果.我尝试过做其他查询中的建议,但它没有用于例如代码:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{
    int endLonn;
    float endLon,eLon;
    endLon=359.8;
    endLonn=359.8*10;
    printf("%d is endLonn\n",endLonn);
    eLon= endLonn / 10;
    printf("elon is %f\n",eLon);
}
Run Code Online (Sandbox Code Playgroud)

给我输出:

elon is 359.00000000
Run Code Online (Sandbox Code Playgroud)

这也不是我想要的.我想elon是359.8.如果你能帮助我调整我的代码,以获得理想的结果,那就太棒了.感谢您的时间.

c math numbers fixed-point decimal

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

lerp 整数或定点数学

有没有一种使用整数进行线性插值的优雅方法?(为了平均微控制器中的 ADC 测量值,ADC 测量值是 12 位,微控制器适用于 32 位整数)。系数 f 在 [0, 1] 范围内。

float lerp(float a, float b, float f)
{
    return a + f * (b - a);
}
Run Code Online (Sandbox Code Playgroud)

math fixed-point

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

如何将浮点数转换为具有一定宽度和精度的定点数。python中有没有库可以用来做到这一点?

我需要一个函数将浮点数转换为以二进制表示的定点数,以便我可以将其放入只能接受定点数的硬件加速器中。例如,当我输入浮点数 5.625 时,数据宽度为 8,精度为 4(尾数为 4 位),它将返回 b'01011010,或 h'5a 或 d'90。python库中有类似的函数吗?

python math fixed-point

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

Ada定点舍入乘法

以下代码打印TRUE表示0.0191*0.0191正在评估0.00030.0192*0.0192正在评估0.0004.然而:

0.0191*0.0191 = 0.00036481
0.0192*0.0192 = 0.00036864
Run Code Online (Sandbox Code Playgroud)

如果舍入发生在阈值处0.00035,那么平方根的相应阈值应该是0.0187.

如果我将delta更改为10.0**(-5),则情况并非如此.

所以我的问题是"在这种情况下如何对定点计算进行舍入?"

with Ada.Text_IO; use Ada.Text_IO;

procedure Main is
   type T is delta 10.0**(-4) range 0.0 .. 10.0;

   X1 : T := 0.0191;
   X2 : T := 0.0192;
   Y : T := 0.0004;
   B : Boolean;
begin
   B := (X1 * X1 = Y - T'Delta) and (X2 * X2 =Y);
   Put_Line(B'Image);
end Main;
Run Code Online (Sandbox Code Playgroud)

fixed-point ada

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

32 位变量的右移操作

我想在 32 变量上右移 33 并将结果存储到浮点变量中。

假设,该值为 1717986812。当我们右移 33 时,我们预计该值为 0.2。

但是当我执行 1717986812 / (1<<33) 时,我得到了其他一些巨大的整数值。我知道 1<<33 ​​的结果不能存储在 32 位值中。所以,我尝试了 17917986812 / (1UL<<33),但没有得到正确的结果。我相信,需要做一些关于格式转换的事情。但是,想不通。

c 64-bit 32-bit fixed-point bit-shift

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