Tag: decimal

单声道C#十进制分割的精度是不同的?

decimal d1 = 4.0m; decimal d2 = 40.0m; decimal d = d1 / d2; string repr = d.ToString(); 在Windows上,我为repr获得“0.1”。 在Mono(Xamarin Android)上,我获得了“0.1000000000000000000000000000”左右。 是什么赋予了? 此外,我已经看到建议除以1.0000000000000000000000000000m以摆脱不必要的尾随零。 这在Xamarin Android上都不起作用。 已知错误? 或者技术上不是错误 – 这是否符合标准? 为了摆脱零,我将值转换为字符串,从字符串中删除尾随零,并将其转换回小数。 它很弱。 此外,我的解决方案不会产生我想要的确切结果。 我宁愿留下相当重要的尾随零,而不是删除所有尾随零。

使用逗号表示千位rdlc报告的小数和句点

我正在使用Report Viewer Control(rdlc)生成报告。 我的一列表示SQL数据库中的十进制值,例如: 5199.9800 在本专栏的最后,所有金额相加。 因此,金额行以这种方式表示: =Fields!DEBIT.Value 总行以这种方式表示: =Sum(CDbl(Fields!DEBIT.Value), “dtsItems”) 目前所有值都以标准方式格式化,使用逗号表示数千,使用句点表示小数,如下所示: 5,199.98 但我需要以相反的方式格式化它:使用数千的周期和小数的逗号,如下所示: 5.199,98 我一直在寻找一种方法来使用表达式或只是更改rdlc文件中的TextBox属性,但似乎没有任何工作。

EntityFramework从SQL Server View返回损坏/交换的数据

我从SQL Server中的视图中进行简单查询: SELECT [PricePerM] FROM RealtyStatParent ORDER BY PricePerM 当我在SQL Management Studio中执行查询时,我得到了正确的结果。 这意味着我从1.00开始获得2532行,结束时为173543.6893。 当我使用entity framework从C#进行查询时,我得到了相同的结果: var justDecimals = context.RealtyStatParents .OrderBy(item => item.PricePerM) .Select(item => item.PricePerM) .ToArray(); 到现在为止没什么特别 但我真正不理解的是跟随查询。 我首先选择整行,然后选择价格(十进制)。 var entireRows = context.RealtyStatParents .OrderBy(item => item.PricePerM) .ToArray(); var decimalFromRows = entireRows .Select(item => item.PricePerM) .ToArray(); PricePerM的许多值重复(值1或48)而不是实际值,并且结果集未正确排序。 EF设计器中行的定义很简单: public partial class RealtyStatParent { public Nullable PricePerM […]

需要在MongoDB中存储高精度十进制值

我对MongoDB没什么经验。 我经常在大型SQL服务器DB上工作。 MongoDB只支持double, 没有小数 。 C#驱动程序将小数序列化为字符串。 如果我将小数作为字符串存储在MongoDB中,我会错过什么function? 有没有办法将小数的默认序列化设置为double(AllowTruncation)而不必在每个属性上放置一个属性? 如果我使用Bson双倍,我会失去什么精确度? 谢谢你的帮助! UPDATE 我有一个在C#中使用小数的现有应用程序模型。 我想将MongoDB用作新的数据库层,并尽可能在现有应用程序中进行更改。 这就是为什么我在寻找一种方法将C#中的小数映射到MongoDB中加倍 。 我明白我的精确度会下降,并且必须分析它的副作用。 我唯一剩下的问题是要知道是否有办法将小数的默认序列化设置为double。 再次感谢。 到目前为止很棒的答案和评论。

从SQL Server读取十进制值时出现溢出exception

我想知道这是一个错误还是我出错了。 我正在使用SQL Server 2008数据库中的SqlDataReader加载值,但在某些情况下,它无法将SQL值转换为.net值。 (.NET 4.0) 我已将其追溯到一个测试案例,该案例演示了实际问题: 工作范例: “select convert(decimal(38, 19), 260000 ) as test” rs.GetValue(1); –> returns 260000 (decimal) 不工作: “select convert(decimal(36, 26), 260000 ) as test” rs.GetValue(1); –> throws System.OverflowException: Conversion overflows. at System.Data.SqlClient.SqlBuffer.get_Decimal() at System.Data.SqlClient.SqlBuffer.get_Value() at System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32 i) at System.Data.SqlClient.SqlDataReader.GetValues(Object[] values) 我已经检查了SQL Server恢复的实际值。 他们的不同之处在于,非工作人员使用4个整数来表示价值,而工作人员只使用3个。 我还检查了.net Reflector的源代码,它揭示了如果值存在超过3个值时抛出exception,但我不理解它们背后的机制。 所以,我想知道这是否是.net框架中的真正错误。

typeof()检查数值

什么是检查typeof()是否在数学上可用(数字)的最简单方法。 我需要使用TryParse方法或检查它: if (!(DC.DataType == typeof(int) || DC.DataType == typeof(double) || DC.DataType == typeof(long) || DC.DataType == typeof(short) || DC.DataType == typeof(float))) { MessageBox.Show(“Non decimal data cant be calculated”); return; } 如果有更简单的方法来实现这一点,你可以自由地建议

C#数据表十进制精度

我有这个代码来向datatable添加新列: DataColumn col = new DataColumn(“column”,typeof(decimal)); col.Caption =“专栏”; mytable.Columns.Add(COL); 如何为此列指定小数精度,以便值始终采用我希望的格式?

使用小数估计计算错误

我们目前正在使用System.Decimals来表示我们正在开发的.NET应用程序中的数字。 我知道小数是为了最小化由于舍入引起的错误而设计的,但是我也知道某些数字,例如1/3,不能表示为小数,因此一些计算将具有小的舍入误差。 我相信这个错误的幅度非常小而且微不足道,但同事不同意。 因此,我希望能够估算因应用程序中的舍入而导致的错误的数量级。 比如说,我们正在计算“交易”的运行总数,并且每天将执行大约10,000次“交易”,并且有大约5-10个十进制操作(add,sub,div,mul等)来计算运行总计收到的每笔交易的新运行总额,圆形错误的大亨顺序是什么? 计算这个程序的答案也很好,所以我可以在将来学习如何为自己做这个。

将字符串转换为十进制神秘

我正面临着使用C#.NET从字符串转换为十进制的问题。 问题是我编写了以下代码,并在我的开发Windows 7 .NET Framework 3.5系统上正常工作。 但是,如果我在Windows 2003 Server .NET 3.5 Framework上移动应用程序,结果会有所不同。 谁能理解那里发生了什么? 码: dec = Convert.ToDecimal(strDec); Windows 7结果:85.00 Windows 2003结果:8500

将十进制转换为百分比或移位小数位。 怎么样

我有一个由两个数字的差异产生的,但它返回例如0,77为7%和0,5为50%我只是想修复到达这些goar,如15.2%13%等等上。 我怎样才能做到这一点? c#有什么东西嵌入CLR才能做到这一点吗?