я использую BC Math
библиотека на PHP, как вы знаете, данные, предоставляемые функциям BC, ДОЛЖНЫ БЫТЬ строками, иначе могут получиться очень странные результаты.
Я храню десятичные значения (18,10) в MySQL.
Мои вопросы:
Какого типа эти значения, когда я получаю их в PHP, они строки? и могу ли я использовать их непосредственно в Британской Колумбии, такие как bcmul($database_decimal_value , '1', '10')
?
Могу ли я использовать вывод функций BC (это строка, я думаю) и напрямую вставить в десятичный тип MySQL?
Постскриптум я прочитал ссылку на MySQL и там написано: Values for DECIMAL columns no longer are represented as strings that require 1 byte per digit or sign character.
не уверен, означает ли это, что они больше не являются строками.
Я проверяю ответ с помощью следующего кода:
<?php
$var = 0.00001;
echo bcmul('10', "$var", '5');
?>
Но это отголоски 0
вместо 0.00010
!
если я изменюсь $var = 0.00001
в $var = '0.00001';
(который является строкой) это работает
Независимо от того, является ли само значение строкой или числом, вы можете принудительно передать его как строку используя правильные цитаты с помощью strval()
bcmul(strval($database_decimal_value) , '1', '10');
И да, вы можете передать эти значения в MySQL без кавычек, и он будет обрабатывать их как числа
Других решений пока нет …