为什么下面这段程序最后输出的是1.6180339887498949而不是1.618033988749895呢,把1.618033988749895写成1.6180339887498950最后还是输出1.6180339887498949。1.6……50 的二进制正好可以用54位二进制表示,而1.6……5的二进制只有51位,为什么会有偏差呢?
static void Main(string[] args)
{
const double number = 1.618033988749895;
double result;
string text; text = string.Format("{0:R}",number);
result = double.Parse(text);
Console.WriteLine("{0}", text);
}
static void Main(string[] args)
{
const double number = 1.618033988749895;
double result;
string text; text = string.Format("{0:R}",number);
result = double.Parse(text);
Console.WriteLine("{0}", text);
}
解决方案 »
- 如何把一个form里的多个值传到textbox中
- 在 c# 中出现 检索 COM 类工厂中 CLSID 为 {29131537。。。。 的组件时失败,原因是出现以下错误: 80040154。
- c# 等值线
- 新手问一个简单问题
- C#中,winform中页面跳转如何写啊.
- @@问一个相当复杂的问题,手软的千万别进!@@
- [疑问].net frame可以安装两个不通的版本吗?
- 如何重载enum每一项的ToString()?
- 如何打开一个下载的Web工程,C#总是报路径不对,无法与web路径对应
- DataGrid使用的源代码!
- 怎样把datatable原封不动的导入到mysql中 最好是又注释的那种代码 谢谢
- C#是否能够获取引用类型在内存中的地址
不能精确表示为二进制啊
是无限循环的
超出double有效数字的部分被截断,就变成1.6180339887498949了