草庐IT

高精度除法

全部标签

c# - 确定输入数字的小数精度

我们有一个有趣的问题是我们需要确定用户输入(文本框)的小数精度。本质上,我们需要知道输入的小数位数,然后返回一个精确数字,最好用示例来说明这一点:输入4500会产生结果1输入4500.1将产生结果0.1输入4500.00将产生结果0.01输入4500.450将产生结果0.001我们正在考虑使用字符串,找到小数点分隔符,然后计算结果。只是想知道是否有更简单的解决方案。 最佳答案 我认为你应该按照你的建议去做——使用小数点的位置。明显的缺点可能是您必须自己考虑国际化。vardecimalSeparator=NumberFormatInf

c# - 为什么这些除法方程的结果为零?

下面for循环中所有除法方程的结果都是0。我怎样才能得到它给我一个小数例如:297/315=0.30793650793650793650793650793651代码:usingSystem;namespaceTestDivide{classProgram{staticvoidMain(string[]args){for(inti=0;i回答:谢谢Jon和大家,这就是我想做的:usingSystem;namespaceTestDivide{classProgram{staticvoidMain(string[]args){intmaximum=300;for(inti=0;i

c# - 将 long 转换为 double 的精度损失有多大?

我在stackoverflow上的不同帖子和C#文档中读到,将long(或任何其他表示数字的数据类型)转换为double会失去精度。由于float的表示,这一点非常明显。我的问题是,如果将较大的数字转换为double,精度损失有多大?我是否必须期望差异大于+/-X?我想知道这一点的原因是我必须处理一个long的连续计数器。这个值被我的应用程序读取为string,需要转换并且必须除以例如10或其他一些小数字,然后进一步处理。decimal是否更适合这项任务? 最佳答案 convertinglong(oranyotherdatatype

c# - .NET 中定时器的最大精度是多少?

我想知道System.Timers中Timer类的精度是多少,因为它是double(这似乎表明您可以有几分之一毫秒)。这是什么? 最佳答案 Windows桌面操作系统在40毫秒以下确实不准确。操作系统根本不是实时的,因此会出现明显的不确定性抖动。这意味着虽然它可能会报告精确到毫秒甚至更小的值,但您不能指望这些值真正有意义。因此,即使Timer间隔设置为某个亚毫秒值,您也不能依赖设置和触发之间的时间来实现您所说的实际时间。除此之外,您正在运行的整个框架是不确定的(GC可能会暂停您并在Timer应该触发的时间进行收集)并且您最终会面临大

c# - 为什么除法结果会因施法类型而异?

这是我不理解的部分代码:byteb1=(byte)(64/0.8f);//b1is79intb2=(int)(64/0.8f);//b2is79floatfl=(64/0.8f);//flis80为什么前两个计算相差一个?我应该如何执行此操作才能快速正确?编辑:我需要以字节为单位的结果 最佳答案 编辑:不完全正确,请参阅:Whydoesadivisionresultdifferbasedonthecasttype?(Followup)舍入问题:通过转换为byte/int,您将剪掉小数位。但是64/0.8不应该有任何小数位?错误:由于

c# - C# 中的 BigInteger 除法

我正在编写一个需要在C#中准确划分BigInteger类的类。例子:BigIntegerx=BigInteger.Parse("1000000000000000000000000000000000000000000000000000000000000000000000000000000000000");BigIntegery=BigInteger.Parse("2000000000000000000000000000000000000000000000000000000000000000000000000000000000000");x/=y;Console.WriteLine(x.T

c# - C#除法求余数和模数

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我想使用C#将5除以3。除法后的余数或取模可以用什么运算符?

c# - 添加两个 .NET SqlDecimals 会提高精度吗?

在.NET中,当我添加两个SqlDecimals时,如下所示:SqlDecimals1=newSqlDecimal(1);SqlDecimals2=newSqlDecimal(1);SqlDecimals3=s1+s2;那么s3的精度为2,而s1和s2的精度均为1。这看起来很奇怪,尤其是文档指出加法运算符的返回值是“一个新的SqlDecimal结构,其Value属性包含总和”。IE。根据文档,加法不应改变精度。我是不是漏掉了什么?这是有意为之的行为吗?干杯,摄影师 最佳答案 Thisarticle(http://msdn.micro

c# - WebAPI、JSON.Net 和丢失小数精度

我在使用WebAPI和JSON.Net时遇到了一些奇怪的问题。在反序列化已提交给我的API的JSON时,我似乎失去了精度!我将小数点保留到小数点后3位,但是当值在我的对象中具体化时,它只保留到小数点后2位!我提交的JSON如下所示:{id:1,name:'mockdata',value:123.456}这绑定(bind)到一个看起来像这样的类:publicclassMockObject{publicintId{get;set;}publicstringName{get;set;}publicdecimalValue{get;set;}}为了完整起见,这基本上是我的WebAPI方法的样子

c# - 填充数据集时 ODP.net Oracle 十进制数精度问题。异常 : Arithmetic operation resulted in an overflow

我正在使用c#.net2(VisualStudio2005SP1)尝试使用来自Oracle10g数据库的select*from表的结果填充数据集。.net框架、IDE和数据库无法在此客户端站点进行更改。我正在使用ODP.net提供商进行连接,dll版本是2.102.2.20当我运行填充命令时出现异常:算术运算导致溢出此外,如果我尝试在VisualStudio设计器(显示表数据)中查看有问题的列,我会为表中该列的每一行获取。如果我的查询选择其他带有整数的列(例如省略此列),则代码可以完美运行。当我在Toad的数据库中查看时,有问题的列看起来很好,数据如下:919.742866695572