jjzjj

c# - decimal.TryParse 乐于接受格式错误的数字字符串

有没有办法让C#TryParse()函数更……严格一点?现在,如果你传入一个包含数字、正确的小数点和千位分隔符的字符串,它通常似乎只是接受它们,即使格式没有意义,例如:123''345'678我正在寻找一种方法,如果数字格式不正确,TryParse不会成功。所以,我在苏黎世,如果我这样做:decimalexampleNumber=1234567.89m;Trace.WriteLine(string.Format("Value{0}getsformattedas:\"{1:N}\"",exampleNumber,exampleNumber));...然后,根据我的区域设置,我得到这个..

c# - 比 decimal.Parse 更快的替代方法

我注意到decimal.Parse(number,NumberStyles.AllowDecimalPoint,CultureInfo.InvariantCulture)比基于JeffreySax来自FasteralternativetoConvert.ToDouble的代码的自定义十进制解析方法慢大约100%publicstaticdecimalParseDecimal(stringinput){boolnegative=false;longn=0;intlen=input.Length;intdecimalPosition=len;if(len!=0){intstart=0;if(

具有名称的元组的 C# 解决方法

我想要具有命名成员的不可变匿名类型,这些成员可以传递、比较和识别——元组和匿名类型的合并。Thisdoesn'texist,我意识到这一点。所以问题是:什么是使用C#4或5的良好惯用替代品?用例是来自异构数据源的流畅LINQ数据处理。总之,C#中的ETL。我做了一些相当复杂的分析,数据来自多个平台和来源。“将它们全部放在同一个平台上并使用EntityFramework”不是一个选项。我希望能够流畅地传递本质上是任意的记录——只读属性的不可变命名集。除了为每个单独的匿名类型创建自定义不可变POCO之外,我唯一能想到的是使用属性将编译注释添加到返回Tuple的方法。当然,编写一个代码生成器

c# - c# 中的 decimal 误解?

(在尝试分析decimal的工作原理时)&&在阅读@jonskeetarticle之后看到msdn,并思考了最后4个小时,我有一些问题:在thislink他们说的很简单:1.5x10^2有2位有效数字1.50x10^2有3位有效数字。1.500x10^2有4有效数字等...好的...我们明白了。来自jon的文章:sign*mantissa/10^exponentAsusual,thesignisjustasinglebit,butthereare96bitsofmantissaand5bitsofexponent^_^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

c# - 如何格式化没有尾随零的小数

我刚刚了解到,小数可以以某种方式记住存储数字需要多少尾随零。换句话说:它会记住分数的大小。例如:123M.ToString()==>resulsin:123123.00M.ToString()==>resulsin:123.00123.450M.ToString()==>resulsin:123.450我正在寻找格式化字符串或其他技巧来摆脱那些“不需要的”尾随零,但保留有效数字。所以:123M.ToString()==>resulsin:123123.00M.ToString()==>resulsin:123123.450M.ToString()==>resulsin:123.45删除

c# - 使用对象列表填充 datagridview

我有一个包含一系列事务对象的列表。我想要做的是在加载表单时在Datagridview控件中显示这些事务对象,基本上Datagridview应该代表事务寄存器的某种东西以显示列表中每个事务对象的数据。我必须承认在使用Datagridviews方面缺乏经验,而且我在理解我需要在这里做什么方面遇到了一些困难。我的问题是,如何获取列表中每个对象的详细信息以显示在Datagridview中?这是我的代码。首先是事务类:publicclassTransaction{//Classpropertiesprivatedecimalamount;privatestringtype;privatedeci

C# 将小数安全地转换为 int

我正在尝试安全地将小数转换为整数。有点像publicstaticboolDecimal.TryConvertToInt32(decimalval,outintval)如果无法转换为整数,则返回false,如果可以,则返回true并成功输出。这是为了避免在decimal.ToInt32方法中捕获OverflowException。最简单的方法是什么? 最佳答案 这里:publicstaticboolTryConvertToInt32(decimalval,outintintval){if(val>int.MaxValue||val

c# - 如何在知道有误差的情况下比较小数

我有两种不同的方法来计算一个值。两种方法运行后,我得到以下信息:decimala=145.2344;decimalb=145.2345;我有一个单元测试:Assert.AreEqual(a,b);我希望能够解释+/-.0001的差异。如何添加此规则? 最佳答案 在NUnit'sconstraintmodel,你可以这样做:Assert.That(Math.Abs(a-b),Is.LessThan(0.0001M));更好的是,让它成为一个函数:voidAssertDiff(decimala,decimalb,decimaldiff=

c# - 来自 Microsoft 的“Decimal”源代码 - 它会构建吗?

我最近试图回答aquestionthatauserposted关于为什么decimal结构没有像所有其他数字基元一样将其最小/最大值声明为const;相反,Microsoft文档指出它是staticreadonly。在研究过程中,我深入研究了Microsoft源代码,并得出了一个有趣的发现;源代码(.NET4.5)使它看起来像一个const,这与文档明确说明的内容相反(源代码和相关的结构构造函数粘贴在下面)。publicconstDecimalMinValue=newDecimal(-1,-1,-1,true,(byte)0);publicconstDecimalMaxValue=ne

c# - 将小数转换为百分比或移动小数位。如何

我有一个由2个数字的差异生成的,但它返回7%的示例0,07和50%的0,5我只想修复以达到这些目标,例如15,2%13%等等。我怎样才能做到这一点?c#是否在CLR上嵌入了一些东西来做到这一点? 最佳答案 您可以使用Percentage定制NumericFormatString.这将做到这一点,而无需您自己倍增。例如,你可以这样做:doublevalue=0.152;stringresult=value.ToString("#0.##%");如果您的语言环境设置为欧洲(我的猜测基于您编写的格式),您将得到一个值为“15,2%”的字符