MVC4 decimal 精度

MVC默认为小数点 后2位

更改设置

在我们现在的MovieDBContext类中重载OnModelCreating方法,代码如下所示。
public class MovieDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }
 
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    modelBuilder.Entity<Movie>().Property(p => p.Price).HasPrecision(18, 2);
    }
}


如果是EF生成的在Mapping中

this.Property(t => t.zbje_D).HasPrecision(15, 6).HasColumnName("zbje_D");


关于界面显示还要注意的

 @Html.EditorFor(model => model.tbzje_D)

修改为

@Html.TextBoxFor(model => model.zbje_D)


EditorFor默认显示2位的

### 如何在 SQL Server 中更改 `decimal` 字段的精度和小数位数 在 SQL Server 中,可以通过修改表结构的方式调整 `decimal` 类型字段的精度 (`precision`) 和小数位数 (`scale`)。具体操作是使用 `ALTER TABLE` 语句配合 `ALTER COLUMN` 子句完成。 以下是实现这一目标的具体方式: #### 修改现有列的精度和小数位数 假设有一个名为 `MyTable` 的表,其中有一列为 `Amount decimal(10,2)`,现在需要将其改为 `decimal(15,4)`。可以执行以下命令: ```sql ALTER TABLE MyTable ALTER COLUMN Amount DECIMAL(15, 4); ``` 需要注意的是,在修改过程中可能会遇到一些限制条件: - 如果该列存在非 NULL 值,则新定义的精度和小数位数必须能够容纳当前数据中的最大值和最小值[^2]。 - 若尝试减少精度或小数位数而导致无法保存已有数据时,SQL Server 将抛出错误并阻止修改操作。 #### 创建带有特定精度的新列再迁移旧数据 当直接修改原列不可行时(例如因为上述提到的数据兼容性问题),可以选择创建一个新的具有所需特性的列,并将原有数据转换后复制过去。之后删除原始列并将新列重命名为原来的名字即可。 示例脚本如下所示: ```sql -- 添加临时新列 ALTER TABLE MyTable ADD Temp_Amount DECIMAL(15, 4); -- 更新新列值为四舍五入处理过的旧列数值 UPDATE MyTable SET Temp_Amount = CAST(Amount AS DECIMAL(15, 4)); -- 删除原来的金额列 ALTER TABLE MyTable DROP COLUMN Amount; -- 把新的临时列更名为正式名称 EXEC sp_rename 'MyTable.Temp_Amount', 'Amount'; ``` 以上过程确保了即使面对复杂情况也能顺利完成对 `decimal` 列属性的更新需求[^3]。 另外值得注意的一点是在 .NET 应用开发环境下,默认情况下无需显式设定参数对象对于 `SqlDbType.Decimal` 的精度与长度属性;除非有特别理由才这样做,否则建议让 ADO.NET 自动决定这些细节以便简化维护工作量的同时保持灵活性[^4]。 最后提醒一点关于默认行为的知识补充:如果未明确指定 `decimal` 或者 `numeric` 类型的小数位数的话,默认会被认为是没有小数部分也就是整数形式存储[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值