在php中将整数转换为十进制值
Posted
技术标签:
【中文标题】在php中将整数转换为十进制值【英文标题】:Converting a whole number to decimal value in php 【发布时间】:2021-06-17 18:59:41 【问题描述】:我有一个 php 应用程序,它应该在 MariaDB 中插入一个货币值,它的表列设置为十进制 (10,2)
为了确保格式正确,我最初做了一个 echo 语句,以确保使用我认为应该是正确格式的结果....
number_format($variable-to-be-converted, 2, '.', '');
但是,当我分配格式转换时,我被告知(通过 mysqli 错误代码)十进制值不正确。我尝试在 13、10 和 4 之间调整小数位;唉,没有快乐。
任何想法将不胜感激 呸呸呸
include '../includes/dbt.php';
//make sure a residence tile was selected or send them back to /play/index.php
if (!isset($_GET['residence']))
//code here
else if (isset($_COOKIE['startingBal']))
session_start();
setCookie("residence", $_GET['residence'], time() + 86400);
$residence = $_COOKIE['residence'];
$balance = $_COOKIE['startingBal'];
$newBal = '';
switch ($residence)
case 'option1':
$newBal = $balance - 3200;
break;
case 'option2':
$newBal = $balance - 3000;
break;
case 'option3':
$newBal = $balance - 800;
break;
case 'option4':
$newBal = $balance - 700;
break;
default:
$balance;
$formattedNewBal = number_format($newBal, '2','.','');
$ingameStatsUpdate = "INSERT INTO ingameStats (`nickname`, `residence`, `newBal`) VALUES ('$nickname', '$residence', '$formattedNewBal')";
if (mysqli_query($conn, $ingameStatsUpdate))
echo "New record created successfully";
else
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
//unset starting balance cookie since now the database will keep track of the balance moving forward
setCookie("startingBal", "", time() -3600);
// close connection
mysqli_close($conn);
【问题讨论】:
在number_format($newBal,'2','.','');
你有两个字符串。请改用number_format($newBal,2,'.','');
。然而,这确实返回一个字符串。最好使用round() 并选择正确的舍入模式。以美分计算金钱也很常见,并且只使用数据库中的整数。
@KIKOSoftware 没关系,PHP 会在必要时自动将字符串转换为数字。
echo $ingameStatsUpdate;
显示什么?
@Barmar INSERT INTO ingameStats (nickname
, residence
, newBal
) VALUES ('', '', '') 这解释了很多:p
【参考方案1】:
有两个问题。
首先,您没有正确设置$residence
。调用setcookie()
不会更新$_COOKIE
数组,因此$residence = $_COOKIE['residence'];
不会将其设置为您刚刚分配的值。见Why are my cookies not setting?
其次,你的default:
case 没有设置$newBal
。所以如果没有匹配的情况,$newBal
仍然有一个空字符串,这在 MySQL 中是一个无效的浮点值。
session_start();
$residence = $_GET['residence'];
setCookie("residence", $residence, time() + 86400);
$balance = $_COOKIE['startingBal'];
switch ($residence)
case 'option1':
$newBal = $balance - 3200;
break;
case 'option2':
$newBal = $balance - 3000;
break;
case 'option3':
$newBal = $balance - 800;
break;
case 'option4':
$newBal = $balance - 700;
break;
default:
$newBal = $balance;
【讨论】:
以上是关于在php中将整数转换为十进制值的主要内容,如果未能解决你的问题,请参考以下文章