如何提高钻孔精度制定Decimal的精度

设置EntityFramework中decimal类型数据精度
时间: 00:58:22
&&&& 阅读:199
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&EF中默认的decimal数据精度为两位数,当我们数据库设置的精度大于2时,EF将只会保留到2为精度。
<span style="color: #.1999将会被保存为2.<span style="color: #
网上找到常见的方法为重写DbContext的OnModelCreating方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
  modelBuilder.Entity&Product&().Property(x =& x.Price).HasPrecision(<span style="color: #, <span style="color: #);
但如果数据表多或者Decimal类型字段多的话,用OnModelCreating的方法将会变得相当冗余,而且不便管理。
我推荐使用Attribute属性标签进行设置,在Entity Model class中decimal的字段上方直接添加自定义拓展的属性标签即可。
其中&[DecimalPrecision(18, 4)]即是我们自定义的精度Attribute
具体实现代码如下:
/// &summary&
/// &para&自定义Decimal类型的精度属性&/para&
/// &/summary&
[AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = false)]
public sealed class DecimalPrecisionAttribute : Attribute
#region Field
private byte _precision = <span style="color: #;
<span style="color: #
public byte _scale = <span style="color: #;
<span style="color: #
#endregion
<span style="color: #
<span style="color: #
#region Construct
<span style="color: #
/// &summary&
<span style="color: #
/// &para&自定义Decimal类型的精确度属性&/para&
<span style="color: #
/// &/summary&
<span style="color: #
/// &param name="precision"&precision
<span style="color: #
/// &para&精度(默认18)&/para&&/param&
<span style="color: #
/// &param name="scale"&scale
<span style="color: #
/// &para&小数位数(默认4)&/para&&/param&
<span style="color: #
public DecimalPrecisionAttribute(byte precision = <span style="color: #, byte scale = <span style="color: #)
<span style="color: #
<span style="color: #
Precision =
<span style="color: #
<span style="color: #
<span style="color: #
#endregion
<span style="color: #
<span style="color: #
#region Property
<span style="color: #
/// &summary&
<span style="color: #
/// 精确度(默认18)
<span style="color: #
/// &/summary&
<span style="color: #
public byte Precision
<span style="color: #
<span style="color: #
get { return this._ }
<span style="color: #
set { this._precision = }
<span style="color: #
<span style="color: #
<span style="color: #
/// &summary&
<span style="color: #
/// 保留位数(默认4)
<span style="color: #
/// &/summary&
<span style="color: #
public byte Scale
<span style="color: #
<span style="color: #
get { return this._ }
<span style="color: #
set { this._scale = }
<span style="color: #
<span style="color: #
#endregion
<span style="color: #
<span style="color: #
<span style="color: #
/// &summary&
<span style="color: #
/// 用于modelBuilder全局设置自定义精度属性
<span style="color: #
/// &/summary&
<span style="color: #
public class DecimalPrecisionAttributeConvention
<span style="color: #
: PrimitivePropertyAttributeConfigurationConvention&DecimalPrecisionAttribute&
<span style="color: #
<span style="color: #
public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DecimalPrecisionAttribute attribute)
<span style="color: #
<span style="color: #
if (attribute.Precision & <span style="color: # || attribute.Precision & <span style="color: #)
<span style="color: #
<span style="color: #
throw new InvalidOperationException("Precision must be between 1 and 38.");
<span style="color: #
<span style="color: #
if (attribute.Scale & attribute.Precision)
<span style="color: #
<span style="color: #
throw new InvalidOperationException("Scale must be between 0 and the Precision value.");
<span style="color: #
<span style="color: #
configuration.HasPrecision(attribute.Precision, attribute.Scale);
<span style="color: #
<span style="color: #
再在DbContext重写OnModelCreating,添加自定义的DecimalPrecisionAttributeConvention即可以方便地任意添加需要精度控制的字段。
public class Project_DbContext : DbContext
public Project_DbContext() : base("DefaultConnection") { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
modelBuilder.Conventions.Add(new DecimalPrecisionAttributeConvention());
base.OnModelCreating(modelBuilder);
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!Double精度的常用设置
我的图书馆
Double精度的常用设置
import java.text.DecimalF import java.math.BigD public class Test_Double{ && public static void main(String[] args){ &&&&&& //-----方法1--------四舍五入& round对负数是五舍六入 &&&&&& double d_1 = 123.9; &&&&&& System.out.println("d_1 = "+Math.round(d_1)); &&&&&& //-------方法2------------------ &&&&&& DecimalFormat decfmt = new DecimalFormat("##0.00");&& &&&&&& System.out.println(decfmt.format(1.)); &&&&&&&& //--------方法3-------------- &&&&&&&& double x = 1.33345;&& &&&&&& java.text.NumberFormat formate = java.text.NumberFormat.getNumberInstance();&& &&&&&& formate.setMaximumFractionDigits(3);//设定小数最大为数&& ,那么显示的最后会四舍五入的&& &&&&&& String m = formate.format(x);&& &&&&&& System.out.println(m);& &&&&&& //--------方法4-------------- &&&&&& BigDecimal bd = new BigDecimal(1.234543);&& &&&&&& bd = bd.setScale(3,BigDecimal.ROUND_HALF_EVEN);&& &&&&&& double d = bd.doubleValue();&& &&&&&& System.out.println(d); &&&&&& //--------取消科学计数法------------- &&&&&& Double dValue = Double.valueOf(".8477474");& &&&&&& System.out.println(dValue); &&&&&& BigDecimal original = new BigDecimal(dValue.doubleValue());& &&&&&& BigDecimal result = original.setScale(2, BigDecimal.ROUND_HALF_DOWN); &&&&&& String test = result.toString(); &&&&&& System.out.println(test); && } }
TA的最新馆藏[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢当前位置: &
decimal precision中文是什么意思
中文翻译十进制精度&&&&adj. 十数的,以十作基础的,十进的;小数的。 dec ...&&&&n. 精密,精确性;严格;精密度;【修辞学】精确。 ar ...&&&&adj. 十数的,以十作基础的,十进的;小数的。 decimal carry 十进制进位。 decimal classification (图书等的)十进制 ...&&&&精密的&&&&n. 精密,精确性;严格;精密度;【修辞学】精确。 arms of precision 装有瞄准仪的枪炮。 adj. 精确的,精密的。 precision
...&&&&二进制编码的十进制; 二进制十进制&&&&二进制十进制&&&&二十进制的; 二进制-十进制&&&&二进制&&&&二十进制记数法&&&&分烛光; 旧烛光&&&&循环小数。 &&&&编码十进制; 二进制编码的十进制&&&&二进制编码的十进制&&&&十进制&&&&十进制的&&&&十进位累加器; 十进制累加器&&&&十进制敏锐度; 小数鉴别力&&&&十进制加&&&&十进制加法器&&&&十进制加法&&&&十进制地址&&&&累加器十进制调整&&&&十进制对剂&&&&普通的十进位算术; 十进算术; 十进制算术; 十进制运算
例句与用法Decimal precision
binary precision for float datatype , null for all other datatypes对于number数据类型为十进制精度;对于float数据类型为二进制精度;对于所有其他数据类型为null 。 &&
相邻词汇热门词汇
decimal precision的中文翻译,decimal precision是什么意思,怎么用汉语翻译decimal precision,decimal precision的中文意思,,,发音,例句,用法和解释由查查在线词典提供,版权所有违者必究。
&&&&&&&&&&&&&&&&
Copyright &
(京ICP备号)
All rights reserved用户操作:
正在加载...
.NET Framework Class Library for Silverlight
Decimal 结构
表示十进制数。
命名空间:
mscorlib(在 mscorlib.dll 中)
&ComVisibleAttribute(True)& _
Public Structure Decimal _
Implements IFormattable, IComparable, IConvertible, IComparable(Of Decimal),
IEquatable(Of Decimal)
Decimal 类型公开以下成员。
将 Decimal 的新实例初始化为指定的双精度浮点数的值。
将 Decimal 的新实例初始化为指定的 32 位有符号整数值。
将 Decimal 的新实例初始化为以二进制表示的、包含在指定数组中的十进制值。
将 Decimal 的新实例初始化为指定的 64 位有符号整数值。
将 Decimal 的新实例初始化为指定单精度浮点数字的值。
将 Decimal 的新实例初始化为指定的 32 位无符号整数值。
将 Decimal 的新实例初始化为指定的 64 位无符号整数值。
用指定实例构成部分的参数来初始化 Decimal 的新实例。
两个指定的 Decimal 值相加。
返回大于或等于指定的十进制数的最小整数值。
比较两个指定的 Decimal 值,并返回一个整数,该整数指示第一个值是大于、小于还是等于第二个值。
将此实例与指定的 Decimal 对象进行比较,并返回一个整数,指示此实例的值是大于、小于还是等于指定的 Decimal 的值。
进行比较,并返回一个整数,指示此实例的值是大于、小于还是等于指定的
两个指定的 Decimal 值相除。
返回一个值,该值指示此实例和指定的 Decimal 对象是否表示相同的值。
是否表示相同的类型和值。
(重写 。)
返回一个值,该值指示 Decimal 的两个指定实例是否表示同一个值。
进行回收之前尝试释放资源并执行其他清理操作。
(继承自 。)
将指定的 Decimal 数字向负无穷方向舍入为最接近的整数。
将 Decimal 的指定实例的值转换为其等效的二进制表示形式。
返回此实例的哈希代码。
(重写 。)
(继承自 。)
的浅表副本。
(继承自 。)
两个指定的 Decimal 值相乘。
返回指定的 Decimal 值乘以 -1 的结果。
将数字的字符串表示形式转换为它的等效 Decimal 表示形式。
将指定样式的数字的字符串表示形式转换为它的等效 Decimal。
使用指定样式和区域性特定格式将数字的字符串表示形式转换为其 Decimal 等效项。
计算两个 Decimal 值相除后的余数。
将 Decimal 值舍入到指定的小数位数。
从一个 Decimal 值中减去指定的另一个这种类型的值。
将指定的 Decimal 的值转换为等效的 8 位无符号整数。
将指定的 Decimal 的值转换为等效的双精度浮点数。
将指定的 Decimal 值转换为等效的 16 位有符号整数。
将指定的 Decimal 值转换为等效的 32 位有符号整数。
将指定的 Decimal 值转换为等效的 64 位有符号整数。
将指定的 Decimal 值转换为等效的 8 位有符号整数。
将指定的 Decimal 的值转换为等效的单精度浮点数字。
将此实例的数值转换为其等效的字符串表示形式。
(重写 。)
使用指定的格式,将此实例的数值转换为它的等效字符串表示形式。
将指定的 Decimal 的值转换为等效的 16 位无符号整数。
将指定的 Decimal 的值转换为等效的 32 位无符号整数。
将指定的 Decimal 的值转换为等效的 64 位无符号整数。
返回指定的 Decimal 的整数位,所有小数位均被放弃。
将数字的字符串表示形式转换为它的等效 Decimal 表示形式。
一个指示转换是否成功的返回值。
使用指定样式和区域性特定格式将数字的字符串表示形式转换为其 Decimal 等效项。
一个指示转换是否成功的返回值。
两个指定的 Decimal 值相加。
操作数减 1。
两个指定的 Decimal 值相除。
返回一个值,该值指示 Decimal 的两个实例是否相等。
将 Decimal 转换成 16 位无符号整数。
将 Decimal 转换成 8 位有符号整数。
将 Decimal 转换成 32 位无符号整数。
将 Decimal 转换为 Unicode 字符。
将 Decimal 转换为 8 位无符号整数。
将 Decimal 转换成 64 位有符号的整数。
将 Decimal 转换为双精度浮点数。
将 Decimal 转换成 16 位有符号的整数。
将 Decimal 转换成 64 位无符号整数。
将 Decimal 转换为单精度浮点数字。
将 Decimal 转换成 32 位有符号的整数。
将双精度浮点数转换为 Decimal。
将单精度浮点数字转换为 Decimal。
返回一个值,该值指示指定的 Decimal 是否大于另一个指定的 Decimal。
返回一个值,该值指示指定的 Decimal 是否大于等于另一个指定的 Decimal。
将 8 位无符号整数转换成 Decimal。
将 Unicode 字符转换为 Decimal。
将 16 位有符号的整数转换成 Decimal。
将 32 位有符号的整数转换成 Decimal。
将 64 位有符号的整数转换成 Decimal。
将 8 位有符号整数转换成 Decimal。
将 16 位无符号的整数转换成 Decimal。
将 32 位无符号的整数转换成 Decimal。
将 64 位无符号的整数转换成 Decimal。
将 Decimal 操作数增加 1。
返回一个值,该值指示 Decimal 的两个实例是否相等。
返回一个值,该值指示指定的 Decimal 是否小于另一个指定的 Decimal。
返回一个值,该值指示指定的 Decimal 是小于还是等于另一个指定的 Decimal。
返回两个指定 Decimal 值相除所得的余数。
两个指定的 Decimal 值相乘。
两个指定的 Decimal 值相减。
对指定 Decimal 操作数的值求反。
返回 Decimal 操作数的值(操作数符号不变)。
表示 Decimal 的最大可能值。
该字段是常数且为只读。
表示数字负一 (-1)。
表示 Decimal 的最小可能值。
该字段是常数且为只读。
表示数字一 (1)。
表示数字零 (0)。
基础结构。ToBoolean。
基础结构。ToByte。
基础结构。不支持此转换。
基础结构。不支持此转换。
基础结构。ToDecimal。
基础结构。ToDouble。
基础结构。ToInt16。
基础结构。ToInt32。
基础结构。ToInt64。
基础结构。ToSByte。
基础结构。ToSingle。
基础结构。ToType。
基础结构。ToUInt16。
基础结构。ToInt32。
基础结构。ToInt64。
值类型表示介于 +79,228,162,514,264,337,593,543,950,335 到 -79,228,162,514,264,337,593,543,950,335之间的十进制数字。
值类型适用于要求使用大量有效的整数及小数位数并且没有舍入错误的财务计算。
类型不会消除对舍入的需要,
而是将因舍入而导致的错误降到最少。
例如,下面的代码产生结果 0.9999 而不是 1。
Dim dividend As Decimal = Decimal.One
Dim divisor As Decimal = 3
' The following displays 0.9999
outputBlock.Text &= dividend / divisor * divisor & vbCrLf
方法时,该结果的精度不会有损失,如下面的代码所示。
Dim dividend As Decimal = Decimal.One
Dim divisor As Decimal = 3
' The following displays 1.00
outputBlock.Text += Math.Round(dividend / divisor * divisor, 2) & vbCrLf
十进制数是由符号、数值和比例因子组成的浮点值,数值的每一位的范围都是 0 到 9,比例因子指示分隔数值的整数和小数部分的浮点小数点的位置。
值的二进制表示形式由 1 位符号、96 位整数以及比例因子组成,比例因子用作 96 位整数的除数并指定整数的哪一部分为小数。
比例因子被隐式设置为数字 10,使用范围为 0 到 28 的指数。
值的二进制表示的形式为((-296 至 296)/ 10(0 到 28)),其中 -296-1 等于 ,296-1 等于 。
比例因子还保留 Decimal 数字中的所有尾随零。
在算术或比较运算中,尾随零并不影响 Decimal 数字的值。
方法显示尾随零。
值转换为 、、、、、、 和
及其反向转换的方法。
的转换属于扩大转换,不会丢失信息或引发异常。
从 Decimal 到任意整型的转换属于收缩转换,会将 Decimal 值向零舍入为最接近的整数值。
值的转换。
类型也提供将 Decimal 值转换为
及其反向转换的方法。
的转换属于收缩转换,可能会丢失精度,但不会丢失所转换值的数量大小信息。
此类转换不会引发异常。
到 Decimal 的转换的结果无法表示为 Decimal,则将引发 。
类进行转换,而不是使用此类型的
显式接口成员实现。
下面的代码示例演示 Decimal 的用法。
' Keeping my fortune in Decimals to avoid the round-off errors.
Class PiggyBank
Protected MyFortune As Decimal
Public Sub AddPenny()
MyFortune = [Decimal].Add(MyFortune, 0.01D)
Public ReadOnly Property Capacity() As Decimal
Return [Decimal].MaxValue
End Property
Public ReadOnly Property Dollars() As Decimal
Return [Decimal].Floor(MyFortune)
End Property
Public ReadOnly Property Cents() As Decimal
Return [Decimal].Subtract(MyFortune, [Decimal].Floor(MyFortune))
End Property
Public Overrides Function ToString() As String
Return MyFortune.ToString("C") + " in piggy bank"
End Function
受以下版本支持:5、4、3受以下版本支持:Windows Phone OS 7.1、Windows Phone OS 7.0受以下版本支持:Xbox 360、Windows Phone OS 7.0
有关 Silverlight 支持的操作系统和浏览器的列表,请参见 。
此类型的所有成员都是线程安全的。
看似修改了实例状态的成员实际上返回一个用新值实例化的新实例。
正如对任何其他类型一样,对于包含此类型的实例的共享变量,也必须通过锁定来保护对其进行的读写,以保证实现线程安全。
在所有的硬件平台上都分配该类型的一个实例不是线程安全的,因为该实例的二进制表示形式可能太大,无法在单个原子操作中分配。}

我要回帖

更多关于 cad如何设置精度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信