Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 我的MySQL函数在乘以小数时完全失去了数学精度。为什么呢?_Php_Mysql_Sql_Database - Fatal编程技术网

Php 我的MySQL函数在乘以小数时完全失去了数学精度。为什么呢?

Php 我的MySQL函数在乘以小数时完全失去了数学精度。为什么呢?,php,mysql,sql,database,Php,Mysql,Sql,Database,我做了这个简单的函数,结果返回1而不是0.5 我做错了什么 DELIMITER // DROP FUNCTION IF EXISTS test_decimal // CREATE FUNCTION test_decimal(input DECIMAL) RETURNS DECIMAL BEGIN SET @_credit = 0.5; RETURN input * @_credit; END // DELIMITER ; SELECT test_decimal(1); 因为

我做了这个简单的函数,结果返回1而不是0.5

我做错了什么

DELIMITER //

DROP FUNCTION IF EXISTS test_decimal //

CREATE FUNCTION test_decimal(input DECIMAL)
  RETURNS DECIMAL
BEGIN
  SET @_credit = 0.5;
  RETURN input * @_credit;
END //

DELIMITER ;

SELECT test_decimal(1);

因为您没有指定
精度
比例
,所以它会舍入该值。精度表示为值存储的有效位数,刻度表示小数点后可以存储的位数。默认情况下,精度值为
10
,刻度值为
0
。因此,
返回十进制
返回十进制(10,0)
相同。如果比例为0,则十进制值不包含小数点或小数部分。尝试在函数中指定

RETURNS DECIMAL(5,2) -- 999.99


如果
@\u credit
也输入为十进制,会发生什么情况?(也就是说,它可能是偶然键入的其他内容吗?)