将十进制转换为整数的JavaScript

将十进制转换为整数的JavaScript,javascript,php,integer,decimal,Javascript,Php,Integer,Decimal,我有一个php变量。。 这是有价值的 3400.00英镑 然后,我有一个JavaScript脚本,它的计数达到前端的值 // Count Up function animateValue(id, start, end, duration) { var obj = document.getElementById(id); var range = end - start; var minTimer = 50; var stepTime = Math.abs(Math.floor(du

我有一个php变量。。 这是有价值的 3400.00英镑


然后,我有一个JavaScript脚本,它的计数达到前端的值

// Count Up
function animateValue(id, start, end, duration) {
  var obj = document.getElementById(id);
  var range = end - start;
  var minTimer = 50;
  var stepTime = Math.abs(Math.floor(duration / range));
  // never go below minTimer
  stepTime = Math.max(stepTime, minTimer);
  // get current time and calculate desired end time
  var startTime = new Date().getTime();
  var endTime = startTime + duration;
  var timer;

  function run() {
    var now = new Date().getTime();
    var remaining = Math.max((endTime - now) / duration, 0);
    var value = Math.round(end - (remaining * range));
    obj.innerHTML = value;
    if (value == end) {
        clearInterval(timer);
    }
  }

  timer = setInterval(run, stepTime);
  run();

}

var value1 = <?=$total_count?>;
var value2 = <?=$total_commission?>;
var value3 = <?=$active_refs?>;

animateValue("value1", 0, value1, 1750);
animateValue("value2", 0, value2, 1750);
animateValue("value3", 0, value3, 1750);
我遇到的问题是,当在javascript中使用php变量时,它会将数字转换为整数并丢失十进制值。从PHP到JavaScript时,如何将数字保持为十进制


我尝试在end变量上使用toFixed2,但没有成功。

在JavaScript中,不能在点后定义带零的变量 1 Javascript引擎清除点后数字末尾的所有零

示例:

设oneZero=1.0; console.log'oneZero:',oneZero; 设TwoZero=1.00; console.log'twoZeros:',twoZeros; 设一和十=1.10; console.log'1.10:',一和十; 设三个零=1.000;
log'threeZeros:',threeZeros在javascript中,如果需要,您可以尝试使用Number函数将字符串转换为数字整数或十进制,并且可以使用parseFloatnumber方法

有关使用数字的示例:

// Convert strings
Number('123'); // returns 123
Number('12.3'); // returns 12.3
Number('3.14someRandomStuff'); // returns NaN
Number('42px'); // returns NaN
有关使用parseFloat的示例:

var text = '3.14someRandomStuff';
var pointNum = parseFloat(text);
// returns 3.14
但是,在您的特定情况下,以下是它如何工作的示例: 编辑、更新代码,使用OP的代码,因为我现在有更多的时间来清除这些内容,以供以后有用的参考

<?php
$total_count = (string) "£3,400.00";
$total_commission = (string) "£3,500.25";
$active_refs = (string) "£4,400.87";
?>

<div class="container2">
  <div id="value1"></div>
  <div id="value2"></div>
  <div id="value3"></div>
</div>

<script>  

// getting a float number from a formatted PHP string
var getNum = function (str) {
    var num = str.replace(/[\£\,]/mg, '');
    var num2 = parseFloat(num);
    return num2;
}

// converting the counter value back to a currency format
var convertNum = function(number){
    let numb = number;
    return numb.toLocaleString('en-GB', {style : 'currency', currency : 'GBP', minimumFractionDigits : '2', currencyDisplay : 'symbol'});
}

var value1 = getNum("<?php echo (string) $total_count ?>");
var value2 = getNum("<?php echo (string) $total_commission ?>");
var value3 = getNum("<?php echo (string) $active_refs ?>");

// Count Up
function animateValue(id, start, end, duration) {
    var obj = document.getElementById(id);
    var range = end - start;
    var minTimer = 50;
    var stepTime = Math.abs(Math.floor(duration / range));
    // never go below minTimer
    stepTime = Math.max(stepTime, minTimer);
    // get current time and calculate desired end time
    var startTime = new Date().getTime();
    var endTime = startTime + duration;
    var timer;

  function run() {
      var now = new Date().getTime();
      var remaining = Math.max((endTime - now) / duration, 0);
      var value = parseFloat(end - (remaining * range));
      obj.innerHTML = convertNum(value);
      if (value == end) {
          clearInterval(timer);
      }
  }

  timer = setInterval(run, stepTime);
  run();

}

animateValue("value1", 1, value1, 1750);
animateValue("value2", 1, value2, 1750);
animateValue("value3", 1, value3, 1750);

</script>

这一行将返回一个整数。

哪个数等于前端的值?您的意思是JavaScript代码正在对该数字进行计算?还是JavaScript只是在动画中显示数字?@RuudHelderman在动画中是的,但JavaScript确实会计算出从哪个数字开始计数,并且您的PHP代码正在向JavaScript代码公开一个格式化的数字。格式化的数字是字符串,而不是数字。你不能用它来做数学题。您甚至不应该尝试。不要在PHP中设置数字格式,只需保持原样,在对itvar value2=.replace/[^\d.]/g进行数学运算后,在JS中设置它的格式即可。应该可以使用replace/[^\d.]/g,但正如其他人所说,在PHP中对未格式化的数字进行数学运算。
var value = Math.round(end - (remaining * range));