草庐IT

Densely_Packed_Decimal

全部标签

c# - 为什么 .NET decimal.ToString(string) 从零舍入,显然与语言规范不一致?

我看到,在C#中,舍入decimal,默认情况下,使用MidpointRounding.ToEven.这是预期的,也是C#规范的规定。但是,鉴于以下情况:AdecimaldVal格式stringsFmt那,当传递给dVal.ToString(sFmt),将导致包含dVal的四舍五入版本的字符串...很明显decimal.ToString(string)返回使用MidpointRounding.AwayFromZero四舍五入的值.这似乎与C#规范直接矛盾。我的问题是:出现这种情况是否有充分的理由?或者这只是语言上的不一致?下面,作为引用,我包含了一些代码,用于控制各种舍入操作结果和de

c# - 为什么 decimal 不是原始类型?

为什么decimal不是原始类型?Console.WriteLine(typeof(decimal).IsPrimitive);输出false。它是一种基本类型,是语言规范的一部分,但不是原始类型。哪些基本类型在框架中表示decimal?例如,int有一个类型为int的字段m_value。double有一个类型为double的字段m_value。decimal不是这种情况。它似乎由一堆int表示,但我不确定。为什么它看起来像原始类型,behaveslikeaprimitivetype(在coupleofcases中除外)但不是原始类型? 最佳答案

c# - 为什么 decimal 不是原始类型?

为什么decimal不是原始类型?Console.WriteLine(typeof(decimal).IsPrimitive);输出false。它是一种基本类型,是语言规范的一部分,但不是原始类型。哪些基本类型在框架中表示decimal?例如,int有一个类型为int的字段m_value。double有一个类型为double的字段m_value。decimal不是这种情况。它似乎由一堆int表示,但我不确定。为什么它看起来像原始类型,behaveslikeaprimitivetype(在coupleofcases中除外)但不是原始类型? 最佳答案

c# - 如何在 EntityFrameworkCore 1.0 rc2 中实现字段 decimal(5,2)?

如何在EntityFrameworkCore1.0rc2中实现字段decimal(5,2)?HasPrecision好像不能用了? 最佳答案 我看到了一些这样的例子:entityBuilder.Property(r=>r.TotalScore).HasColumnType("decimal(5,2)").IsRequired(true);支持它的代码在这里,所以希望你使用的版本支持它:https://github.com/aspnet/EntityFramework/blob/f416dd9a71a5a6a69715b4ba40a3

c# - 如何在 EntityFrameworkCore 1.0 rc2 中实现字段 decimal(5,2)?

如何在EntityFrameworkCore1.0rc2中实现字段decimal(5,2)?HasPrecision好像不能用了? 最佳答案 我看到了一些这样的例子:entityBuilder.Property(r=>r.TotalScore).HasColumnType("decimal(5,2)").IsRequired(true);支持它的代码在这里,所以希望你使用的版本支持它:https://github.com/aspnet/EntityFramework/blob/f416dd9a71a5a6a69715b4ba40a3

c# - MidpointRounding 的 Decimal.Round 默认设置

这个问题在这里已经有了答案:Whydoes.NETusebanker'sroundingasdefault?(5个答案)关闭9年前。以下适用:varrounded=Decimal.Round(7.635m,2);//rounded:7.63对我来说,这是错误的和意外的行为。我假设rounded的值为7.64。为了实现这一点,我可以做到:varrounded=Decimal.Round(7.635m,2,MidpointRounding.AwayFromZero);//rounded:7.64这怎么可能不是Decimal.Round的默认行为?这有什么好的理由吗?

c# - MidpointRounding 的 Decimal.Round 默认设置

这个问题在这里已经有了答案:Whydoes.NETusebanker'sroundingasdefault?(5个答案)关闭9年前。以下适用:varrounded=Decimal.Round(7.635m,2);//rounded:7.63对我来说,这是错误的和意外的行为。我假设rounded的值为7.64。为了实现这一点,我可以做到:varrounded=Decimal.Round(7.635m,2,MidpointRounding.AwayFromZero);//rounded:7.64这怎么可能不是Decimal.Round的默认行为?这有什么好的理由吗?

c# - 为什么 "decimal.TryParse()"在下面的代码中对于输入字符串 "-1"总是返回 0?

下面的代码应该返回-1十进制值,但它返回的是0。我做错了什么吗?decimalvalidity=-1;validityStr="-1";decimal.TryParse(validityStr,NumberStyles.AllowDecimalPoint,CultureInfo.InvariantCulture,outvalidity);预期输出:-1实际输出:0 最佳答案 你忘了告诉TryParse前导标志是OKdecimalvalidity=-1;varvalidityStr="-1";decimal.TryParse(vali

c# - 为什么 "decimal.TryParse()"在下面的代码中对于输入字符串 "-1"总是返回 0?

下面的代码应该返回-1十进制值,但它返回的是0。我做错了什么吗?decimalvalidity=-1;validityStr="-1";decimal.TryParse(validityStr,NumberStyles.AllowDecimalPoint,CultureInfo.InvariantCulture,outvalidity);预期输出:-1实际输出:0 最佳答案 你忘了告诉TryParse前导标志是OKdecimalvalidity=-1;varvalidityStr="-1";decimal.TryParse(vali

c# - 为什么使用 Decimal.Multiply 与运算符乘法?

decimalresult=100*200;对比decimalresult=Decimal.Multiply(100,200); 最佳答案 使用Decimal.Multiply将强制乘法采用decimal类型的输入,而不是正在使用并转换为decimal.Decimal.Multiply(decimald1,decimald2)并将强制输出decimal类型。*你可以做什么:decimalresult=yourDecimal*yourInt;这允许您在某些情况下混合和匹配类型,它会为您处理所有这些,但不能保证类型是十进制,具体取决于右