首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在原则2中指定十进制字段类型时,刻度和精度意味着什么?

在原则2中指定十进制字段类型时,刻度和精度意味着什么?
EN

Stack Overflow用户
提问于 2013-02-18 16:13:06
回答 5查看 75.7K关注 0票数 80

我正在创建一个十进制字段,以便在Doctrine2中为我的Symfony2应用程序保存一个财务数字。

目前,它看起来如下:

代码语言:javascript
运行
复制
/**
 * @ORM\Column(type="decimal")
 */
protected $rate;

当我输入一个值并将值持久化到数据库时,它被舍入为整数。我猜我需要为这个领域设置精度和比例类型,但是我需要有人来解释他们到底在做什么?

Doctrine2文档说:

精度:十进制(精确数字)列的精度(仅适用于十进制列) 小数位:十进制(精确数字)列的刻度(只适用于十进制列)。

但这并没有告诉我太多。

我猜精度是小数位数,所以我假设应该是2,但是什么是小数点呢?比例尺是重要数字吗?

我的实地申报应该是这样吗?

代码语言:javascript
运行
复制
/**
 * @ORM\Column(type="decimal", precision=2, scale=4)
 */
protected $rate;
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-18 16:17:09

原则使用类似于SQL类型的类型。十进制恰好是一个固定的精度类型(不像浮点数)。

摘自MySQL文档

在十进制列声明中,可以(而且通常是)指定精度和标度;例如: 薪金小数(5,2) 在这个例子中,5是精度,2是刻度。精度表示为值存储的有效数字数,而刻度表示小数点之后可以存储的数字数。 标准SQL要求十进制(5,2)能够用五位数和两个小数存储任何值,因此可以存储在工资列中的值从-999.99到999.99不等。

票数 125
EN

Stack Overflow用户

发布于 2014-03-10 16:15:31

只需简单说明一下:我不得不从属性的精度和比例中删除引号,如下所示:

代码语言:javascript
运行
复制
@ORM\Column(type="decimal", precision=8, scale=2)
票数 33
EN

Stack Overflow用户

发布于 2016-06-06 19:33:57

代码语言:javascript
运行
复制
@Column(type="decimal", precision=5, scale=2) means 123.45
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14940574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档