c# - 从大双值中获取字符串(C#)

标签 c# double tostring

找不到将 double 型转换为字符串的简单方法。我需要在不失真的情况下转换大数字。如:

double d = 11111111111111111111;
string s = d.ToString();
Console.WriteLine(s);
//1.11111111111111E+19

如何从与用户输入完全相同的 double 值中获取字符串值。

11111111111111111111111 => "11111111111111111111111"

1.111111111111111111111 => "1.111111111111111111111"

有什么想法可以做到吗?

最佳答案

double是浮点类型。所以它的准确性有限。在您的示例中,您可以执行以下操作:

double d = 11111111111111111111;
string s = d.ToString("F0");
Console.WriteLine(s);

但正如您将看到的,这将输出 11111111111111100000 而不是 1111111111111111111,因此它在此过程中失去了准确性。所以这里的答案是为工作使用正确的类型。如果需要字符串,请使用字符串变量来存储值。

编辑

This was the question我试图找到解释 float 学问题的方法。感谢@GSerg

关于c# - 从大双值中获取字符串(C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40376988/

相关文章:

java - 如何在java项目中找到哪个数据类没有覆盖toString()方法

c# - 声明一个长常量字节数组

c# - 无法加载 Xamarin.Forms Visual Studio 2015 中的 memtrack(没有此类文件或目录)错误

c# - 不必要地转换为用于在 mscorlib 中调用 ToString() 的对象

java - 无法在基本类型 double 上调用 set Double(Double)

c++ - g++编译器中奇怪的将转换范围缩小为两倍到 float 警告

java - 为每个键打印 map 中列表项的大小

c# - 如何以编程方式在 C# 中查找所有可用的波特率(serialPort 类)

c# - 是否可以从空变量开始联合?

double - 在 GPU 上,是否可以通过结合 double 和浮点运算来获得更多的触发器?