Tag: 小数

C#decimal.Parse行为

简短的问题: 为什么这些’ ….. ‘在.NET(C#)中解析小数有效: decimal res = decimal.Parse(“8……15”); // returns 815 decimal res = decimal.Parse(“8…15”); // returns 815 decimal res = decimal.Parse(“8..15”); // returns 815 这是什么原因?

将字符串解析为十进制,逗号和句点

如何将字符串解析为十进制,以便它适用于两种格式 – w /逗号和句点? [Fact] public void foo(){ var a=”1,1″; var b=”1.1″; Assert.Equal(Parse(a),Parse(b)); } private decimal Parse(string s){ return decimal.Parse(s,NumberStyles.Any, CultureInfo.InvariantCulture); } 输出: Test ‘Unit.Sandbox.foo’ failed: Assert.Equal() Failure Expected: 11 Actual: 1,1

有小数,如果存在则要修剪到2位小数

有小数,如果存在则要修剪到2位小数

数学解释为什么Decimal的转换为Double并且Decimal.GetHashCode将相等的实例分开

我不确定这种说明Stack Overflow问题的非标准方式是好还是坏,但是这里有: 什么是最好的(数学或其他技术)解释为什么代码: static void Main() { decimal[] arr = { 42m, 42.0m, 42.00m, 42.000m, 42.0000m, 42.00000m, 42.000000m, 42.0000000m, 42.00000000m, 42.000000000m, 42.0000000000m, 42.00000000000m, 42.000000000000m, 42.0000000000000m, 42.00000000000000m, 42.000000000000000m, 42.0000000000000000m, 42.00000000000000000m, 42.000000000000000000m, 42.0000000000000000000m, 42.00000000000000000000m, 42.000000000000000000000m, 42.0000000000000000000000m, 42.00000000000000000000000m, 42.000000000000000000000000m, 42.0000000000000000000000000m, 42.00000000000000000000000000m, 42.000000000000000000000000000m, }; foreach (var m in arr) { Console.WriteLine(string.Format(CultureInfo.InvariantCulture, “{0,-32}{1,-20:R}{2:X8}”, m, (double)m, m.GetHashCode() )); } Console.WriteLine(“Funny consequences:”); […]

获取最后2个没有舍入的小数位数

在C#中,我试图得到一个双精度的最后两位小数,没有四舍五入。 我已经尝试了从Math.Floor到Math.Truncate所有内容, Math.Floor没有任何工作。 我想要的结果样本: 1,424.2488298 -> 1,424.24 53.5821 -> 53.58 10,209.2991 -> 10,209.29 有任何想法吗?

如何使用Interop将c#中的小数传递给vb6

我有一个带有属性的interop c#类: decimal ImportoDocumento { get; set; } 如果我尝试从vb6访问此属性,则会收到错误: 编译器错误:标记为受限制的函数或接口,或者函数使用visual basic中不支持的自动化类型。 所以我发现了这个部分解决方案 decimal ImportoDocumento { [return: MarshalAs(UnmanagedType.Currency)] get; [param: MarshalAs(UnmanagedType.Currency)] set; } 但货币支持最多4位小数的数字。 我的数字也有6位小数。 我能怎么做?

将包含hex值的字节数组转换为十进制值

我在c#中进行应用。我想将包含hex值的字节数组转换为十进制值。假设我有一个字节数组作为 array[0]=0X4E; array[1]=0X5E; array[2]=0X75; array[3]=0X49; 在这里,我想将hex数组转换为十进制数,就像我想要将所有字节值连接为4E5E7549并在该数字转换为十进制之后。我不想将每个单独的hex数转换为十进制。该hex的十进制等值号码是1314813257。所以请帮帮我。谢谢。

C#加倍到十进制精度损失

我有一个双”138630.78380386264″ ,我想将其转换为小数,但是当我这样做时,我通过转换或使用Convert.ToDecimal()来做它,我失去了精度。 这是怎么回事? decimal和double都可以保存这个数字: double doub = double.Parse(“138630.78380386264”); decimal dec = decimal.Parse(“138630.78380386264”); string decs = dec.ToString(“F17”); string doubse =DoubleConverter.ToExactString(doub); string doubs = doub.ToString(“F17”); decimal decC = (decimal) doub; string doudeccs = decC.ToString(“F17”); decimal decConv = Convert.ToDecimal(doub); string doudecs = decConv.ToString(“F17”); 另外:如何在Double上获取ToString()以打印出与调试器显示的相同的结果? 例如138630.78380386264 ?

C#Decimal.Parse问题用逗号

这是我的问题(对于en-US): Decimal.Parse(“1,2,3,4”)返回1234,而不是抛出InvalidFormatException。 大多数Windows应用程序(Excel en-US)不会删除千位分隔符,也不会将该值视为十进制数。 其他语言也会出现同样的问题(尽管字符不同)。 还有其他十进制解析库可以解决这个问题吗? 谢谢!

C#无限有效十进制数字(任意精度)没有java

可能重复: 什么是java类的等价物:c#中的BigDecimal 我在这篇文章中知道: C#中的任意精度小数? 说使用java.math.BigDecimal,但我没有安装J#。 如何在C#中实现任意精度? 我在考虑使用二进制字符串,但在将两者相乘时可能会遇到麻烦。