Home  >  Article  >  Backend Development  >  An article analyzing the error demonstration of PHP meta-transfer (with code examples)

An article analyzing the error demonstration of PHP meta-transfer (with code examples)

藏色散人
藏色散人forward
2023-02-03 15:15:493515browse

This article brings you relevant knowledge about PHP, which mainly introduces the errors that occur in the mutual conversion of amounts (yuan to points) through PHP. Friends who are interested can take a look at it together. I hope it will help Everyone is helpful.

An article analyzing the error demonstration of PHP meta-transfer (with code examples)

php Yuan transfer error demonstration

Explanation

Once the amount is processed It is very easy for errors to occur if they are transformed into each other. So I wrote an article to record it.

The main reason for the error is that the internal variable is a floating point number.

Interested students can try it.

Wrong demonstration.

$price=20.08;
echo yuan_to_fen($price);

function yuan_to_fen($price)
{
  return intval(100 * $price);
}

function yuan_to_fen2($price)
{
  return floor(100 * $price);
}
function yuan_to_fen3($price)
{
  return (int)(100 * $price);
}

Correct demonstration

$price=20.08;
echo yuan_to_fen($price);

function yuan_to_fen($price)
{
  return round(100 * $price);
}

Summary

<?php
$a = 20.08;
$b = yuan_to_fen1($a);
$c = yuan_to_fen2($a);
$d = yuan_to_fen3($a);
$e = yuan_to_fen4($a);

$x = yuan_to_fen31($a);
$y = yuan_to_fen32($a);
$z = yuan_to_fen33($a);

echo(&#39;价格=&#39; . $b . "\n");//2007
echo(&#39;价格2=&#39; . $c . "\n");//2007
echo(&#39;价格3=&#39; . $d . "\n");//2007
echo(&#39;价格4=&#39; . $e . "\n");//2008

echo(&#39;方法31=&#39; . $x . "\n");//2008
echo(&#39;方法32=&#39; . $y . "\n");//2008
echo(&#39;方法33=&#39; . $z . "\n");//2008

function yuan_to_fen1($price)
{
  return intval(100 * $price);
}

function yuan_to_fen2($price)
{
  return floor(100 * $price);
}

function yuan_to_fen3($price)
{
  return (int)(100 * $price);
}

function yuan_to_fen4($price)
{
  return 100 * $price;
}

function yuan_to_fen31($price)
{
  return intval(strval(100 * $price));
}

function yuan_to_fen32($price)
{
  //返回浮点数。
  return round(100 * $price);
}

function yuan_to_fen33($price)
{
  //返回整型,比较推荐这种。
  return intval(round(100 * $price));
}

Recommended learning: "PHP video tutorial

The above is the detailed content of An article analyzing the error demonstration of PHP meta-transfer (with code examples). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:learnku.com. If there is any infringement, please contact admin@php.cn delete