繁体   English   中英

当值由javascript设置时,隐藏小数位数最多2个类似excel的地方,不要在php中删除

[英]Hide decimal places upto 2 places like excel not delete in php when value is set by javascript

我正在使用cakephp 2.5制作成本核算表,在其中我通过使用javascript函数计算值,该值在小数点后给出值,如果我舍入该值,则总计的确切金额有所不同,所以我想显示由javascript设置的值最多只能保留2个十进制,但要将所有十进制值保存到数据库中,即MySql,

    <td colspan="2" >
<?php echo $this->Form->input('Particular.particular_value'.$i,  array('name'=>'particular_value[]','label'=>false, 'class'=>'form-control', 'type'=>'number','min'=>'0','step'=>'.001','default' => "0",'autocomplete' => 'off','value'=>isset($this->data['Particular'][$index]['particular_bare_pipe_rate_per_mt_value'])?$this->data['Particular'][$index]['particular_bare_pipe_rate_per_mt_value'] :'0')); ?>
    </td>

$('#CostValue').val(precisionRound(pbcrv, 0));
function precisionRound(number, precision) {
        var factor = Math.pow(10, precision);
        return Math.round(number * factor) / factor;
    }

当我输入值时,它会按预先定义的公式进行计算,然后使用precisionRound函数将它们四舍五入,但是当我使总数与excel表所产生的总数始终有所不同时,我想要像EXCEL表号函数那样的东西,其中我的值最多显示2位小数在前面显示,但是当我计算值或将值保存到数据库中时,应保存所有十进制值。

计算表

蓝色背景输入框是正在调用js函数进行进一步计算的输入框,灰色背景输入框已禁用输入(它们基于第一个输入),我想在其中显示2个小数位值。 像那样 -

  • 实际值-2664.267779
  • 在前面显示值-2664
  • 保存在数据库中-2664.267779

由于多种原因,您应该考虑不依赖客户端的计算将数据过帐到服务器,然后再将其存储。 一个更可靠的解决方案是将输入发布到计算中,然后在服务器上再次进行计算。

原因很多,例如

a)您的客户端计算错误,很容易看到NaN错误地发布到服务器。

b)如果此计算是(例如)计算与您订购的相同类型的X件商品的总价并显示总价,则精明的用户将能够在过帐之前编辑输入字段,并可能支付较少的金额为他们的商品。


对于那些读(b)并认为“'-没有人会这样做”的人,我已经在野外看到了……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM