将XLS转换为javascript舍入错误

converting XLS to javascript rounding error

本文关键字:舍入 错误 javascript XLS 转换      更新时间:2023-09-26

我正在尝试将XLS电子表格转换为基于Javascript的网页。我很确定我遇到了一些舍入误差。我获取"单元格"的值,然后构建函数,然后使用这些函数的结果来构建其他函数。我知道有一些冗余,比如"o11=b5",但我这样做是为了更紧密地复制XLS文件,使其更容易转换。

我的解决方案是什么?

  var e17=parseFloat( $("#k_rcr").val())/100 ;
  var w16=parseFloat($("#k_nobt").val());
  var m12=e17*w16;
  var b5=parseFloat($("#k_nobt").val());
  var b6=parseFloat($("#k_asbw").val());
  var b7=parseFloat($("#k_spdb").val());
  var b8=parseFloat($("#k_ur").val())/100;
  var b9=parseFloat($("#k_bplm").val());
  var b11=b6/b7;
  var b12=b11*b8;
  var b13=b12*(b9*(52/12));
  var e5=parseFloat($("#k_dps").val());
  var b14=b13/e5;
  var m13=b14;
  var e6=parseFloat($("#k_fr").val())/100;
  var m14=m13*e6;
  var e18=parseFloat($("#k_alsr").val())/100;
  var e8=parseFloat($("#k_ba").val());
  var e9=parseFloat($("#k_pwm").val())/100;
  var m15=e18*e8*(1-e9); 
  var m16=m15*m14;
  var m17=m16*m12; 
  var e12=e8*(1-e9);
  var m18=(b5*m14*e12)-m17;
  var m19=parseFloat($("#k_wpv").val()); 
  var m20=m18*m19; 
  var o11=b5;
  var o13=b14;
  var o14=m14; 
  var o18=b5*o14*e12;
  var b17=parseFloat($("#k_wpv").val());
  var o19=b17;
  var o20=o18*o19;
  var o21=o20-m20; 
  var w12=0;
  var b20=parseFloat($("#k_tcpwp").val());
  var b21=parseFloat($("#k_vpwp").val());
  var w13=b20*m17;
  var w14=b21*m17;
  var w15=w12+w13+w14;
  var w16=b5;
  var w17=200;
  var w18=5;
  var w19=(w17*w16)+(w18*w16);
  var u15=0;
  var u19=0;
  var w20=(w15+w19)-(u15+u19); 
  var u25=0;
  var w25=0;
  var w26=u25-w25;
  var o29=w26; 
  var o21=o20-m20; 
  var m25=0;
  var o25=0; 
  var o26=m25-o25;
  var s29=w20;
  var q29=o26;
  var m29=o21;
  var k29=(m29+o29)-(q29+s29);

  $("#k_nibg").html( formatMoney( k29 ) );
  $("#k_bc").html( (m29/s29).toFixed(2) );

结果显示Excel的舍入与预期的不同。如果我在Excel中将单元格强制设置为小数点后4位,它与我的网页版本完全匹配。