可以在php中表示数学乘法步骤。我已经尝试但是我无法显示完整的步骤,我只是得到总和并随身携带,我希望得到结果。
例如: -
4 2 0
x 5 2
-----------
8 4 0
2 1 0 0
-------------
2 9 4 0
这是我的PHP代码。
$data = array(
'digit1' => $_POST['value1'],
'digit2' => $_POST['value2'],
'digit3' => $_POST['value3'],
'digit4' => $_POST['value4'],
'digit5' => $_POST['value5']
);
# ------------------------------------------------------------
$product = $data['digit5'] * $data['digit3'];
$a = $product % 10;
$carry = floor($product / 10);
$product = ($data['digit5'] * $data['digit2']) + $carry;
$b = $product % 10;
$carry = floor($product / 10);
$product = ($data['digit5'] * $data['digit1']) + $carry;
$c = $product;
#-------------------------------------------------------------
$product = $data['digit4'] * $data['digit3'];
$d = $product % 10;
$carry = floor($product / 10);
$product = ($data['digit4'] * $data['digit2']) + $carry;
$e = $product % 10;
$carry = floor($product / 10);
$product = ($data['digit4'] * $data['digit1']) + $carry;
$f = $product;
#-------------------------------------------------------------
$x = intval($c . $b . $a);
$y = intval($f . $e . $d) * 10;
#-------------------------------------------------------------
echo sprintf("%' 10d\n", $c ." " .$b . " ".$a);
echo "<br/>";
echo sprintf("%' 9d\n", $f. " " .$e ." ". $d);
echo "<br/>";
echo "----------\n";
echo "<br/>";
echo sprintf("%' 10d\n", $x + $y);
这是我的HTML
<form method="POST" action="ui.php">
<input type="textbox" name="value1"/>
<input type="textbox" name="value2"/>
<input type="textbox" name="value3"/>
<input type="textbox" name="value4"/>
<input type="textbox" name="value5"/>
<input type="Submit" name="Submit"/>
答案 0 :(得分:2)
如果使用str_split()将被乘数转换为值数组,则可以使用pow()函数计算出每一行。
<?php
$multiplier = 420;
$multiplicand = 52;
$result = $multiplier * $multiplicand;
$pad_max = strlen($result);
$multiplicand_values = str_split($multiplicand);
echo str_pad($multiplier, $pad_max, " ", STR_PAD_LEFT) . PHP_EOL;
echo str_pad("x" . $multiplicand, $pad_max, " ", STR_PAD_LEFT) . PHP_EOL;
echo str_pad("-", $pad_max, "-", STR_PAD_LEFT) . PHP_EOL;
for($i = 0; null !== ($digit = array_pop($multiplicand_values)); ++$i)
{
echo str_pad($multiplier * $digit * pow(10, $i), $pad_max, " ", STR_PAD_LEFT) . PHP_EOL;
}
echo str_pad("-", $pad_max, "-", STR_PAD_LEFT) . PHP_EOL;
echo str_pad($result, $pad_max, " ", STR_PAD_LEFT) . PHP_EOL;
答案 1 :(得分:0)
类似的东西:
$a = intval( $_POST['value1'] . $_POST['value2'] . $_POST['value3']);
$b = array(
1 => intval( $_POST['value5']),
10 => intval( $_POST['value4']),
);
echo $a . '<br />';
echo 'x ' . $b[10] . $b[1] .'<br />';
echo '--------------';
foreach ($b as $key => $number) {
echo $key*$number*$a . '<br />';
}
echo '--------------<br />';
echo $a * (($b[10] * 10) + $b[1]);