Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使扣除结果包含2位小数_Php_Number Formatting - Fatal编程技术网

Php 使扣除结果包含2位小数

Php 使扣除结果包含2位小数,php,number-formatting,Php,Number Formatting,我正在从数据库导入一个价格。 价格值最初包含两位小数 从每个价格值中,我想扣除相关的运费值,并将结果保留在小数点后2位 代码: while($row = $result->fetch_assoc()) { $product_name = $row['Name']; $keys = array_keys($item_array, $product_name); foreach ($keys as $x) $product[$x]["total_pric

我正在从数据库导入一个价格。 价格值最初包含两位小数

从每个价格值中,我想扣除相关的运费值,并将结果保留在小数点后2位

代码:

while($row = $result->fetch_assoc()) {

    $product_name = $row['Name'];

    $keys = array_keys($item_array, $product_name);
    foreach ($keys as $x) 

    $product[$x]["total_price"] = $row['price'];
    $product[$x]["shipping"] = $row['shipping'];
    $product[$x]["base_price"] = ($row['price']-$row['shipping']); // Calculation
目前,我不确定它是如何工作的,但何时:

$product[1][“价格”]=99.90

我扣除的相关运费是
0
, 结果是
99.9
,而不是
99.90


保留两个小数点的最佳做法是什么?

99.90
99.9
的格式化输出。要获得恒定的数字格式,必须通过
number\u format
以以下方式输出:

echo number_format ( $product[1]["price"], 2 );
参数
2
是要打印的小数位数

请注意:此函数的结果是一个字符串,不是数字;该函数用于打印输出,而不是用于数学


在official中,您可以看到如何设置其他参数,如小数点分隔符和千位分隔符。

99.90
99.9
的格式化输出。要获得恒定的数字格式,必须通过
number\u format
以以下方式输出:

echo number_format ( $product[1]["price"], 2 );
参数
2
是要打印的小数位数

请注意:此函数的结果是一个字符串,不是数字;该函数用于打印输出,而不是用于数学

在official中,您可以看到如何设置其他参数,例如小数点分隔符和千位分隔符。

您可以随时使用这些分隔符设置数字和字符串的格式

在你的情况下,你可以这样做

$product[$x][“基本价格”]=sprintf(%.2f),($row['price']-$row['SHIPHING'])

您始终可以使用设置数字和字符串的格式

在你的情况下,你可以这样做



$product[$x][“基本价格”]=sprintf(%.2f),($row['price']-$row['SHIPHING'])

但我如何将
$product[$x][“base_price”]
预先格式化,以便在我每次回显它时,它都会立即格式化?是的,如果您不使用它进行计算。因此,您可以执行
$product[1][“price”]=number\u格式($product[1][“price”],2)
money\u格式或NumberFormatter::formatCurrency可能是better@rjdown你能详细说明一下吗?它们更适合于货币格式。例如,日元没有小数点,所以你不想盲目地添加它们。这些方法还将在正确的位置添加适当的货币符号。加拿大元符号就是一个很好的例子,它会根据您所在的地区(例如en_CA或fr_CA)从左侧变为右侧,但是我如何格式化
$product[$x][“base_price”]
以提前格式化,以便在我回送它的每个实例中,它都会立即格式化?是的,如果你不计算的话。因此,您可以执行
$product[1][“price”]=number\u格式($product[1][“price”],2)
money\u格式或NumberFormatter::formatCurrency可能是better@rjdown你能详细说明一下吗?它们更适合于货币格式。例如,日元没有小数点,所以你不想盲目地添加它们。这些方法还将在正确的位置添加适当的货币符号。加拿大元符号就是一个很好的例子,它会根据您所在的地区(例如en_CA或fr_CA)从左侧变为右侧。这会自动打印吗?因为在此阶段我不想打印任何内容,只想为数据库中的每一行创建一个新的
$product[$x][“base_price”]
变量。请注意,在数据库中,它可能没有0,因为您的数据库引擎可能会忽略它,但在输出中您可以添加此变量line@Gal是印刷品,是的,是印刷品!(请参阅)使用
sprintf
返回变量,而不是打印-it@fusion3k你说得对,我编辑了我的答案。很抱歉。@rockyraw这取决于你。这会自动打印吗?因为在此阶段我不想打印任何内容,只想为数据库中的每一行创建一个新的
$product[$x][“base_price”]
变量。请注意,在数据库中,它可能没有0,因为您的数据库引擎可能会忽略它,但在输出中您可以添加此变量line@Gal是印刷品,是的,是印刷品!(请参阅)使用
sprintf
返回变量,而不是打印-it@fusion3k你说得对,我编辑了我的答案。很抱歉。@rockyraw这取决于你