gpt4 book ai didi

c# - 解析大双值C#

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:24 24 4
gpt4 key购买 nike

解析很大的double值将返回错误的值。

例如

Double.Parse("987654321098765432109876543210987.99") 


返回 9.8765432109876547E+32,这是错误的。如何处理呢?

我要在网页中用逗号分隔显示以上值。请帮助。

最佳答案

大整数

double的精度有限,因此它将仅存储数字的前15-16位。为了获得更高的精度,请使用System.Numerics.BigInteger-它不支持
非整数,因此您必须自己添加小数点(如果有
固定的小数位数)。


  大整数结构
  
  .NET Framework 4.0以上
  
  表示任意大的有符号整数。


(来源:http://msdn.microsoft.com/en-us/library/dd268287%28v=vs.99%29.aspx

相关功能:


  解析
  
  将数字的字符串表示形式转换为其BigInteger
  当量。
  
  命名空间:System.Numerics
  
  程序集:System.Numerics(在System.Numerics.dll中)

public static BigInteger Parse(string value)



(来源: http://msdn.microsoft.com/en-us/library/dd268231%28v=vs.100%29.aspx

例:

import System.Numerics.BigInteger;
BigInteger.Parse("98765432109876543210987654321098999").ToString(); // note, no dot


您还需要引用System.Numerics程序集。

大定点数

如果数字中需要固定的小数位数,则可以自己实现定点算术和I / O。在此示例中,我将使用两位小数,但可以
容易修改。

关键是不要使用原始号码,而是原始号码的倍数。例如,
如果您的电话号码是 X,则内部表示为 X * 100

加减

加减法工作无需修改。让我们考虑数字X,Y和Z,
及其内部表示形式:

X + Y = Z

X*100 + Y*100 = Z*100


这两个方程都是正确的。

乘法与除法

乘法和除法需要一些算术运算。让我们修改前面的例子
用于乘法:

X * Y = Z

(X*100) * (Y*100) = Z*100 <--- WRONG


您需要对方程进行一些修改:

X * Y = Z

(X*100) * (Y*100) = Z*100*100

Z * 100 = (X*100) * (Y*100) / 100


因此,您需要将结果除以100,以获得正确的内部表示形式。
使用除法时,您需要将两个操作数分别乘以100。

输入输出

如果您的输入始终包含两位十进制数字,则只需删除该十进制
指向获取数字的内部表示。自由格式输入要求
更多的工作。

在输出中,您必须在最后两位数字之前插入小数点
得到正确的输入。此外,如果数字小于0,则可能必须
在前面插入零。

关于c# - 解析大双值C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15520441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com