double 转字符串的奇怪问题,路过的都来看下吧。

漩涡之冰1 2014-06-14 08:28:00
double d = 123456789123456789.123;
想转成 “123456789123456789.123”这样的字符串,各种ToString的格式都试过了,貌似无解, 先把double转decimal的话,回丢失数据,各位客官请赐教!
...全文
72 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fuyouche 2014-06-14
  • 打赏
  • 举报
回复
引用 4 楼 Fuyouche 的回复:
我从这里看到的http://hi.baidu.com/yu_xiyan/item/d602daf6235115dd6325d29a; double为8个字节:表示为:一个符号位,11个指数位,52个尾数来表示,所以有效位数为 2^52=4503599627370496为15位,指数的范围为2^12-1=4095(-2047~2047)
补充一下: double 的有效数字是15位,即表示成科学计数法之后,从左边第一位不是0的数开始到精确到的位数为止,中间的所有数字都是有效位; 例如:890314000保留三位有效数字为8.90×10的8次方【有效数字:890】; 自然123456789123456789.123;表示为科学计数法,以最大的有效数字方式为1.23456789123457E+17【有效数字:123456789123457】 ps:如果某个数的有效数字位数超过15位,当把它定义为双精度变量时,超出的部分会自动四舍五入。
Fuyouche 2014-06-14
  • 打赏
  • 举报
回复
我从这里看到的http://hi.baidu.com/yu_xiyan/item/d602daf6235115dd6325d29a; double为8个字节:表示为:一个符号位,11个指数位,52个尾数来表示,所以有效位数为 2^52=4503599627370496为15位,指数的范围为2^12-1=4095(-2047~2047)
漩涡之冰1 2014-06-14
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
double根本不能保存 123456789123456789.123。你的源代码能够写,不代表着运行时就这样保存数据。 你应该了解一下double的有效数字。
明白你的意思了!
漩涡之冰1 2014-06-14
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
double根本不能保存 123456789123456789.123。你的源代码能够写,不代表着运行时就这样保存数据。 你应该了解一下double的有效数字。
double 的最大值试1.79769e+308,只过过是科学计数法而已,和有效数无关,超过18位就会自动显示成科学计数法,现在是想转成相应的非科学计数法的字符串。
  • 打赏
  • 举报
回复
double根本不能保存 123456789123456789.123。你的源代码能够写,不代表着运行时就这样保存数据。 你应该了解一下double的有效数字。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧