首页 > 解决方案 > 当值由javascript设置时,隐藏小数位最多2位,如excel不会在php中删除

问题描述

我正在使用 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 个小数位值的地方。像那样 -

标签: javascriptphpjquerycsscakephp

解决方案


出于多种原因,您应该考虑不依赖客户端计算将数据 POST 到服务器然后存储它。更强大的解决方案是将输入 POST 到计算中并在服务器上再次进行计算。

造成这种情况的原因很多,例如

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

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


对于那些阅读(b)并认为'不-没有人会那样做'的人,我在野外见过它......


推荐阅读