python decimal是什么类型_decimal 详解

1.为什么要有decimal,解决了什么问题,为什么不用float

因为float会丢失精度。原因在于二进制要想表示十进制的数就会存在误差,比如用二进制来表示0.1,根本无法精确表示,但是这不是bug,是个feature,因为标准就是这样定的。(IEEE 754 http://www.cnblogs.com/bossin/archive/2007/04/08/704567.html)

2.decimal为什么就不存在不精确的问题?

Decimal完美利用了 【通过借助整数来表示小数的方式】解决了不精确的问题。用二进制表示任何一个精准十进制整数,不管是奇数还是偶数,都是没有问题的。

3.mysql中有对应的字段吗

试着创建一个表

create table t1 (a_decimal decimal(4,2));

insert into t1 set a_decimal = 100;

会出现如下报错

1264, u"Out of range value for column 'a_decimal' at row 1"

继续

insert into t1 set a_decimal = 10;

显示插入成功;

mysql dbu@(none):test> select * from t1;

+-----------+

| a_decimal |

+-----------+

| 10.00 |

| 99.00 |

+-----------+

说明4代表是字段长度,2代表的是小数点后的长度。

insert into t1 set a_decimal = 10.2392323;

insert into t1 set a_decimal = 10.2312323;

+-----------+

| a_decimal |

+-----------+

| 10.00 |

| 99.00 |

| 10.00 |

| 10.23 |

| 10.24 |

+-----------+

实验说明小数点后多出来的部分会自动四舍五入

4.使用场景有哪些

一般所有需要精确计算的场景,比如银行以及订单支付相关

5.python中decimal如何来使用

Decimal ( 3.14 )

Decimal('3.140000000000000124344978758017532527446746826171875')

运行上面命令可以看出来decimal和float的区别

6.python中的decimal如何用特定格式展示

{0:.2f}.fromat(Decimal('32.2222'))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值