您的位置:首页 > 数据库 > MySQL

mysql 乘法精度

2016-03-25 11:55 645 查看
void Item_func_mul::result_precision()

{

/* Integer operations keep unsigned_flag if one of arguments is unsigned */

if (result_type() == INT_RESULT)

unsigned_flag= args[0]->unsigned_flag | args[1]->unsigned_flag;

else

unsigned_flag= args[0]->unsigned_flag & args[1]->unsigned_flag;

decimals= min(args[0]->decimals + args[1]->decimals, DECIMAL_MAX_SCALE);

uint est_prec = args[0]->decimal_precision() + args[1]->decimal_precision();

uint precision= min(est_prec, DECIMAL_MAX_PRECISION);

max_length= my_decimal_precision_to_length_no_truncation(precision, decimals,

unsigned_flag);

}

分析上面代码发现:

精度scale:

decimals= min(args[0]->decimals + args[1]->decimals, DECIMAL_MAX_SCALE);

精度precision:

uint est_prec = args[0]->decimal_precision() + args[1]->decimal_precision();

uint precision= min(est_prec, DECIMAL_MAX_PRECISION);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql