相关疑难解决方法(0)

x87中的扩展(80位)双浮点,而不是SSE2 - 我们不会错过它?

我今天正在阅读研究人员发现NVidia的Phys-X库使用x87 FP与SSE2.显然,对于速度超过精度的并行数据集来说,这将是次优的.然而,文章作者继续引用:

英特尔在2000年末引入P4后开始不鼓励使用x87.AMD自2003年K8以来已弃用x87,因为x86-64定义为SSE2支持; VIA的C7自2005年以来一直支持SSE2.在64位版本的Windows中,x87不适用于用户模式,完全禁止在内核模式下使用.自2005年以来,业内所有人都推荐SSE超过x87,除非软件必须在嵌入式Pentium或486上运行,否则没有理由使用x87.

我想知道这件事.我知道x87内部使用80位扩展双精度值来计算值,而SSE2则不然.这对任何人都没关系吗?这对我来说似乎很惊讶.我知道当我对平面中的点,线和多边形进行计算时,在进行减法时,值可能出乎意料地错误,并且由于缺乏精度,区域可能会折叠并且线条会相互别名.我想,使用80位值与64位值可能会有所帮助.

这是不正确的?如果没有,如果x87被淘汰,我们可以用什么来执行扩展的双FP操作?

floating-point sse2 x87

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

VBA舍入问题

我在VBA中有这个模糊的舍入问题.

a = 61048.4599674847
b = 154553063.208822
c = a + b   
debug.print c
Result: 
154614111.66879 
Run Code Online (Sandbox Code Playgroud)

这是一个问题,为什么VBA取代了变量c?我没有发出任何舍入功能.我期待的价值是154614111.6687894847.即使我将变量c舍入或格式化为15位小数,我仍然没有达到预期的结果.

任何解释将不胜感激.

编辑:

使用cDec获得了预期的结果.我在Jonathan Allen的回复中已经读过这个为什么CLng会产生不同的结果?

以下是测试结果:

a = cDec(61048.4599674847)
b = cDec(154553063.208822)
c = a + b
?c
154614111.6687894847 
Run Code Online (Sandbox Code Playgroud)

excel vba

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

标签 统计

excel ×1

floating-point ×1

sse2 ×1

vba ×1

x87 ×1