JavaScript计算器总是四舍五入到底

时间:2016-04-06 14:18:13

标签: javascript

我已经制作了一个计算器来满足我的需求,但是我已经完成了所有结果。

如何让它显示确切结果?

function toFixed(value, precision) {
var precision = precision || 0,
  neg = value < 0,
  power = Math.pow(10, precision),
  value = Math.round(value * power),
  integral = String((neg ? Math.ceil : Math.floor)(value / power)),
  fraction = String((neg ? -value : value) % power),
  padding = new Array(Math.max(precision - fraction.length, 0) + 1).join('0');
     return precision ? integral + '.' +
  padding + fraction : integral; } function dosage () {

  var a =  parseInt(jQuery("#a").val() ) ;
  var b =  parseInt(jQuery("#b").val() ) ;
  var c =  parseInt(jQuery("#c").val() ) ;
  var r = Math.round(a*((a*(b/100)*2)+(c*25.4))*(0.0152/100));
 r = toFixed(r,1);

2 个答案:

答案 0 :(得分:1)

好吧,如果您编写了代码,那么您添加了:

 integral = String((neg ? Math.ceil : Math.floor)(value / power))

所以,如果你不想要Math.floor,你应该把它拿出来吗? 或者,如果有时您需要Math.floor,则需要调查neg值,因为这会导致您的返回值始终向下舍入。

这条线,正如你所看到的那样,第二部分似乎不正确:

 (value / power)

只是一个表达式,它紧挨着你的三元运算结果。我不确定那部分是如何影响任何事情的。

答案 1 :(得分:0)

以下是测试的完整代码

&#13;
&#13;
<script type="text/javascript">

jQuery(document).ready(function()
 {
function dosage_e(e)
 {
e.preventDefault();
dosage();
}

function toFixed(value, precision) {
var precision = precision || 0,
  neg = value < 0,
  power = Math.pow(10, precision),
  value = Math.round(value * power),
  integral = String((neg ? Math.ceil : Math.floor)(value / power)),
  fraction = String((neg ? -value : value) % power),
  padding = new Array(Math.max(precision - fraction.length, 0) + 1).join('0');
     return precision ? integral + '.' + padding + fraction : integral; } 

function dosage () {      
      var a =  parseInt(jQuery("#a").val() ) ;
      var b =  parseInt(jQuery("#b").val() ) ;
      var c =  parseInt(jQuery("#c").val() ) ;
      var r = Math.round(a*((a*(b/100)*2)+(c*25.4))*(0.0152/100));
     r = toFixed(r,1);

jQuery("#result").val(r);}


jQuery("#a").keyup(
   function (e) { dosage(e); } );

jQuery("#b").keyup(
   function (e) { dosage(e); } );

jQuery("#c").keyup(
   function (e) { dosage(e); } );

   dosage(); } ); // ]]&gt;

</script>


 <div id="fond-voiture" align="center">

  <div><h1 style="color:white; font-family:Arial;">VALUE 1</h1><input id="a" type="text" name="a" value="385" />
  </div>
</br>
  <div><h1 style="color:white; font-family:Arial;">VALUE 2</h1><input id="b" type="text" name="b" value="65" />    
  </div>
</br>
  <div><h1 style="color:white; font-family:Arial;">VALUE 3</h1><input id="c" type="text" name="c" value="22.5"/>
  </div>
</br>
  <div><h1 style="color:white; font-family:Arial;">VALUE 4</h1><input id="result" readonly="readonly"/>
  </div>

 </div>

</div>
&#13;
&#13;
&#13;