草庐IT

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

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

c# - 在幕后,C#/.NET 中的十进制值类型发生了什么?

decimal类型是如何实现的?更新它是一个128位的值类型(16字节)1个符号位尾数96位(12字节)8位指数剩余的位(其中23个!)设置为0谢谢!我将坚持使用64位长和我自己的隐含比例。 最佳答案 DecimalFloatingPoint维基百科上的文章,带有指向这篇关于System.Decimal的文章的特定链接.Adecimalisstoredin128bits,eventhoughonly102arestrictlynecessary.Itisconvenienttoconsiderthedecimalasthree32-

c# - 在幕后,C#/.NET 中的十进制值类型发生了什么?

decimal类型是如何实现的?更新它是一个128位的值类型(16字节)1个符号位尾数96位(12字节)8位指数剩余的位(其中23个!)设置为0谢谢!我将坚持使用64位长和我自己的隐含比例。 最佳答案 DecimalFloatingPoint维基百科上的文章,带有指向这篇关于System.Decimal的文章的特定链接.Adecimalisstoredin128bits,eventhoughonly102arestrictlynecessary.Itisconvenienttoconsiderthedecimalasthree32-

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# - 小数和数学运算

我在C#中对decimal进行了简单的转换。它看起来像这样:privatedecimalBaseValue{get;set;}publicdecimalConvertedValue{get{returnBaseValue*(365/360);}}但是,这不起作用。我假设是因为C#正在将分数中的数字处理为整数。所以我可以这样做(有效):publicdecimalConvertedValue{get{returnBaseValue*(decimal)((double)365/(double)360);}}现在这似乎有点矫枉过正,但我​​可以接受。我的主要问题是:WhydoesVisualS

c# - 小数和数学运算

我在C#中对decimal进行了简单的转换。它看起来像这样:privatedecimalBaseValue{get;set;}publicdecimalConvertedValue{get{returnBaseValue*(365/360);}}但是,这不起作用。我假设是因为C#正在将分数中的数字处理为整数。所以我可以这样做(有效):publicdecimalConvertedValue{get{returnBaseValue*(decimal)((double)365/(double)360);}}现在这似乎有点矫枉过正,但我​​可以接受。我的主要问题是:WhydoesVisualS

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# - 四舍五入到两位小数

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:c#-HowdoIroundadecimalvalueto2decimalplaces(foroutputonapage)将double四舍五入到小数点后两位并固定在小数点后两位的最佳方法是什么?示例:2.346->2.35,2->2.00我希望避免这样的事情,我必须将double转换为字符串,然后再转换回double,这似乎是一种糟糕的方法。