python浮点溢出_Python浮点静默溢出精度

如果预期结果在225...240范围内,则可能出现以下问题:生成fun时出错

d中的值不正确

函数add、sub、mul和safeDiv应该做一些比浮点加法、减法、乘法和除法更复杂的事情。在

问题中提供的输入不能给出-2786.17215265之外的任何内容,因为这是一个完美的数值结果。没有浮点舍入错误或溢出。下面是测试脚本的输出,其中包含详细版本的算术函数,所有浮点运算都定义良好。没有任何东西可以引起明显的舍入误差。当减去接近值时,存在一些风险操作:add: -10626.8589858 + 10627.794501 = 0.935515251547

然而,这远不是舍入误差。在

同样的结果可以通过C程序或数学工具(MATLAB/Octave)得到。在

屏幕截图中的不同输出是由于没有显示的局部变量的值造成的。由于Out[108]与Out[110]相同,我假设ds与{}相同。局部变量用于输出Out[109]和Out[110],因此差异在于rv的值,因为在In[110]中只有该变量被更改。如果所有其他变量的值都是固定的,那么可以看到如果rv等于下列值之一,则可以得到Out[109](230.62977145178198),即4.075164147,4.485709922,51.72476610。下面测试脚本中的最后一行输出也说明了这一点。在

注意,如果fun被分析为rv的函数,它有两个极点(围绕3.3和{})。所以,从技术上讲,这个函数可以给出从负无穷到正无穷的结果。在Test

^{pr2}$

Outputsub: 26.2235845341 - 0 = 26.2235845341

mul: 2708.41452689 * 3.25991727261 = 8829.20729761

add: 26.2235845341 + 8829.20729761 = 8855.43088215

add: 2708.41452689 + 3 = 2711.41452689

mul: 51.6965219541 * 2711.41452689 = 140170.700616

sub: 8855.43088215 - 140170.700616 = -131315.269734

mul: -131315.269734 * 51.6965219541 = -6788542.72473

add: 2708.41452689 + -6788542.72473 = -6785834.3102

div: 51.6965219541 / -6785834.3102 = -7.61830006318e-06

add: 0 + 3.25991727261 = 3.25991727261

sub: -7.61830006318e-06 - 3.25991727261 = -3.25992489091

sub: 2708.41452689 - 27.491618858 = 2680.92290804

div: 51.6965219541 / 26.2235845341 = 1.97137511414

sub: 1.97137511414 - 1 = 0.971375114142

div: 77.1000519162 / 51.6965219541 = 1.49139727397

sub: 4 - 54.6298636339 = -50.6298636339

div: 1.49139727397 / -50.6298636339 = -0.029456869265

add: 31.1561128065 + 51.6965219541 = 82.8526347606

add: -0.029456869265 + 82.8526347606 = 82.8231778914

div: 0.971375114142 / 82.8231778914 = 0.0117283004453

mul: 2680.92290804 * 0.0117283004453 = 31.4426693361

div: 31.4426693361 / 31.1561128065 = 1.00919744165

sub: -3.25992489091 - 1.00919744165 = -4.26912233256

add: 4 + 77.1000519162 = 81.1000519162

add: -4.26912233256 + 81.1000519162 = 76.8309295836

add: 26.2235845341 + 26.2235845341 = 52.4471690682

add: 51.6965219541 + 51.6965219541 = 103.393043908

mul: 2708.41452689 * -4 = -10833.6581076

mul: 27.491618858 * 27.491618858 = 755.789107434

div: 77.1000519162 / 31.1561128065 = 2.47463643475

div: 755.789107434 / 2.47463643475 = 305.414200171

div: 54.6298636339 / 77.1000519162 = 0.708558065477

add: 2708.41452689 + 0.708558065477 = 2709.12308496

sub: 2709.12308496 - 2708.41452689 = 0.708558065477

add: 305.414200171 + 0.708558065477 = 306.122758237

sub: 4 - 77.1000519162 = -73.1000519162

add: 306.122758237 + -73.1000519162 = 233.02270632

add: -10833.6581076 + 233.02270632 = -10600.6354013

sub: -10600.6354013 - 26.2235845341 = -10626.8589858

mul: 27.491618858 * 51.6965219541 = 1421.22107785

mul: 3.25991727261 * 54.6298636339 = 178.088836061

mul: 51.6965219541 * 178.088836061 = 9206.57342319

add: 1421.22107785 + 9206.57342319 = 10627.794501

add: -10626.8589858 + 10627.794501 = 0.935515251547

div: 51.6965219541 / 0.935515251547 = 55.2599456488

mul: 54.6298636339 * 55.2599456488 = 3018.84329521

sub: 103.393043908 - 3018.84329521 = -2915.4502513

add: 52.4471690682 + -2915.4502513 = -2863.00308224

add: 76.8309295836 + -2863.00308224 = -2786.17215265

-2786.17215265

230.629771452

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值