我使用脚本从google获得货币,然后将数据写入数据库。
然而,当我这样做时,我得到的是9.99999999,而不是我发送的东西。我的InnoDB设置为十进制(9,8)。
$conn->set_charset('utf8');
$add_currency_query = "INSERT INTO `currency_table`
(`currency_rate`, `time_fetched`, `service`)
VALUES ('$converted_amount', UTC_TIMESTAMP(), 'google-finance')"; 和我的PHP
$get = explode("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
$converted_amount = preg_replace('/[^0-9\.]/', null, $get[0]);关于如何解决这个问题/我做错了什么,有什么建议吗?
发布于 2016-07-14 18:39:30
小数(9,8)表示总共有9个符号,其中8个是在圆点后面。这意味着您只能存储最多9.99999999的数字,如果您将高于它的任何内容保存下来,它可能会保存为9.99999999。
建议:将您的字段更改为十进制(20,8)
发布于 2016-07-14 18:38:36
DECIMAL (9,8)指的是总中的9位数字,小数点之后的8位数字。
那么十进制的最大数是多少呢?是9.99999999。当你寄出的号码比你能储存的要大的时候,你就会得到这个号码。当值溢出时,MySQL只存储尽可能高的值。
https://stackoverflow.com/questions/38381769
复制相似问题