C#双重格式化

我正在尝试将C#double值转换为指数表示法的字符串.考虑一下这个C#代码

double d1 = 0.12345678901200021;
Console.WriteLine(d1.ToString("0.0####################E0"));
//outputs: 1.23456789012E-1 (expected: 1.2345678901200021E-1)

任何人都可以告诉我格式字符串从双d1输出“1.2345678901200021E-1”,如果可能的话?

解决方法

双值只能容纳15到16位数,你有17位(如果我算的是右边).由于64位双数字仅保留16位数字,因此您的最后一位数字会被截断,因此当您将数字转换为科学计数法时,最后一位数字似乎已被截断.

你应该使用十进制.十进制类型可以保存128位数据,而double只能保存64位.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...