Tag: 数学

如何在c中使用%运算符表示浮点值

当我在浮点值上使用%运算符时,我得到错误,指出“无效操作数为二进制%(有’浮’和’双’)”。我只想输入整数值,但数字非常大(不在范围内) int类型)所以为了避免我使用float的不便。有没有办法在这么大的整数值上使用%运算符????

3d加速度计计算方向

我有3轴的加速度计值(通常只有重力包含介于-1.0和1.0之间的数据): float Rx; float Ry; float Rz; 我做了躯体计算,然后我得到每个轴的角度。 float R = sqrt(pow(Rx,2)+pow(Ry,2)+pow(Rz,2)); float Arx = acos(Rx/R)*180/M_PI; float Ary = acos(Ry/R)*180/M_PI; float Arz = acos(Rz/R)*180/M_PI; 然后我在opengl中设置框角度的值 rquad = Arx; yquad = Ary; 哪个旋转我的盒子: glRotatef(yquad,1.0f,0.0f,0.0f); glRotatef(rquad,0.0f,1.0f,0.0f); 它适用于半球。 我想使用完整的球体,我知道我必须使用Arz值使其工作,但我不知道如何使用它进行此旋转。 你可以帮帮我吗? 更新:最终答案在我的情况下: rquad = -atan2(Rx/R, Rz/R)*180/M_PI; yquad = -atan2(Ry/R, Rz/R)*180/M_PI;

C / C ++数学运算顺序

所以我知道C ++有一个运算符优先级 int x = ++i + i++; 未定义,因为pre ++和post ++处于同一级别,因此无法确定哪个将首先计算。 但我想知道的是,如果 int i = 1/2/3; 未定义。 我问的原因是因为有多种方法可以看(1/2)/ 3 OR 1 /(2/3)。 我的猜测是它是一个未定义的行为,但我想确认一下。

C中除法的奇怪结果

一些重复: 1.265 * 10000 = 126499.99999999999 ????? 浮点是如何存储的? 什么时候重要? Java程序中奇怪的浮点行为 为什么我看到一个双变量初始化为某个值,如21.4为21.399999618530273? Flash添加错误 我将23除以40(23/40)。 在C中,该操作结果为0.5749999999999996。 但实际上它必须是0.575! 我怎样才能解决这个问题?

如何在C语言中捕获整数除零exception?

众所周知如何使用的方法捕获浮点除零exception signal(SIGFPE, handler) 但即使我设置控制字,它也不会捕获整数除零问题 _control87(0, _MCW_EM ); (MS VC 2010) SubQuestion_1:如何在不使用SEH EXCEPTION_INT_DIVIDE_BY_ZERO的情况下在Windows中的C程序中捕获整数除零? (在Unix / Linux中,这可以通过使用标准信号/ SIGFPE技术来完成) 编辑:信号是ANSI C信号处理方法。 _control87是设置浮点控制字的标准Windows函数。 类似的问题: 如何统一处理所有错误,包括内部C库错误 注(来自ISO / IEC 9899:TC2 Annex H.2.2): “有符号的C整数类型int,long int,long long int和相应的无符号类型与LIA-1兼容。… C的无符号整数类型在LIA-1意义上是’modulo”溢出或out-of-bounds结果以静默方式换行。定义有符号整数类型也是模数的实现不需要检测整数溢出,在这种情况下, 只需要检测整数除零。 ?最终解决方案: 对于Windows:它会引发SEHexception。 所以它可以通过使用__try __except来捕获。 作为可能的解决方案,可以使用SEH转换来处理SEHexception并将它们转换为所需function的调用。 它不是一种“自然”的方式,但它似乎是唯一的方式。 对于Unix:它可以通过signal / SIGFPE解决方案捕获。 或者查看wiki以获取FPE_INTDIV解决方案( http://rosettacode.org/wiki/Detect_division_by_zero#C )。 由于GMan对“未定义的行为”是正确的,我选择他的答案是正确的。 注意:检查VC \ crt \ src \ winxfltr.c:_XcptActTab数组很有意思:)

在32位系统上存储2个以上的电源31

我必须写一个程序,可以计算2 power 2010的功率,并找到数字的总和。 例如: if `2 power 12 => gives 4096 . So 4+0+9+6 = 19 . 现在我需要找到相同的2 power 2010. 请帮我理解。

特殊的简单随机数发生器

如何创建一个函数,在每次调用时生成一个随机整数? 该数字必须尽可能最随机(根据均匀分布 )。 它只允许使用一个静态变量和最多3个基本步骤,其中每个步骤仅包括arity 1或2的一个基本算术运算。 例: int myrandom(void){ static int x; x = some_step1; x = some_step2; x = some_step3; return x; } 基本算术运算是+, – ,%,而不是xor,或左移,右移,乘法和除法。 当然,不允许使用rand(),random()或类似的东西。

C:如何将多位数分解成单独的变量?

假设我在C中有一个多位数整数。我想将其分解为单位数整数。 123将变为1和3 。 我怎么能这样做,特别是如果我不知道整数有多少位?

sin,cos,tan和舍入误差

我正在用C / C ++进行一些三角计算,并且遇到了舍入错误的问题。 例如,在我的Linux系统上: #include #include int main(int argc, char *argv[]) { printf(“%e\n”, sin(M_PI)); return 0; } 该程序提供以下输出: 1.224647e-16 当正确的答案当然是0。 使用trig函数时,我可以期待多少舍入误差? 我怎样才能最好地处理这个错误? 我熟悉用于比较浮点数的最后位置单位技术,来自Bruce Dawson的比较浮点数 ,但这似乎在这里不起作用,因为0和1.22e-16相当于几个ULP。

给定起点和终点以及距离,计算沿线的点

寻找最快的方法来计算位于距离线的终点给定距离的线上的点: void calculate_line_point(int x1, int y1, int x2, int y2, int distance, int *px, int *py) { //calculate a point on the line x1-y1 to x2-y2 that is distance from x2-y2 *px = ??? *py = ??? } 感谢您的回复,不是这不是家庭作业,只是一些黑客攻击我的正常专业领域。 这是下面建议的function。 它并不接近工作。 如果我在圆的右上角90度部分每隔5度计算一个点作为起始点,并调用下面的函数,圆的中心为x2,y2的距离为4,则终点完全错误。 它们位于中心的下方和右侧,长度与中心点一样长。 有人有什么建议吗? void calculate_line_point(int x1, int y1, int x2, int y2, int distance) […]