相关疑难解决方法(0)

浮点不准确性有多确定性?

我知道浮点计算存在准确性问题,并且有很多问题可以解释原因.我的问题是,如果我运行两次相同的计算,我是否可以始终依赖它来产生相同的结果?哪些因素可能会影响这个?

  • 计算之间的时间?
  • CPU的当前状态?
  • 不同的硬件?
  • 语言/平台/操作系统?
  • 太阳耀斑?

我有一个简单的物理模拟,并希望记录会话,以便他们可以重播.如果可以依赖计算,那么我只需要记录初始状态加上任何用户输入,我应该始终能够完全重现最终状态.如果计算不准确,那么在开始时错误可能会在模拟结束时产生巨大影响.

我目前在Silverlight工作,但有兴趣知道这个问题是否可以回答一般.

更新: 初始答案表明是,但显然这并不完全清楚,如所选答案的评论中所述.看起来我将不得不做一些测试,看看会发生什么.

c# math floating-point silverlight

25
推荐指数
3
解决办法
4167
查看次数

如何在c ++中编写可移植的浮点运算?

假设您正在编写一个执行大量浮点运算的C++应用程序.假设这个应用程序需要在合理范围的硬件和操作系统平台上可移植(例如32位和64位硬件,Windows和Linux都是32位和64位版本......).

您如何确保所有平台上的浮点算法都相同?例如,如何确保所有平台上的32位浮点值真的是32位?

对于整数,我们有stdint.h但似乎没有浮点等价物.


[编辑]

我得到了非常有趣的答案,但我想为这个问题增加一些精确度.

对于整数,我可以写:

#include <stdint>
[...]
int32_t myInt;
Run Code Online (Sandbox Code Playgroud)

并确保无论我在哪个(C99兼容)平台上,myInt都是32位整数.

如果我写:

double myDouble;
float myFloat;
Run Code Online (Sandbox Code Playgroud)

我确定这会在所有平台上分别编译为64位和32位浮点数吗?

c++ floating-point

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

在matlab和java中的fft

我使用jtransforms库在matlab和java中做了fft,但结果略有不同.

Matlab results:
-0.0530528652679544
-0.00775535711930750 + 0.0281791646147104i
-0.0304104457750988 - 0.209776156064443i
0.266945753193636 + 0.200338044445226i

Jtransforms results:
-0.05305448436232618
-0.007755593801247046 + 0.028180024600812384
-0.03041137385657606 -0.20978255812004887
0.26695389998013486 + 0.20034415846373468
Run Code Online (Sandbox Code Playgroud)

结果是不同的还是Matlab只是四舍五入?

java matlab fft

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

标签 统计

floating-point ×2

c# ×1

c++ ×1

fft ×1

java ×1

math ×1

matlab ×1

silverlight ×1