将double(0.1)转换为BigRational并返回

时间:2015-06-19 19:20:24

标签: c# floating-point bigdecimal

我必须遗漏某些内容,但当我尝试从double0.1创建BigRational时,它会给我一个非常长的无意义值。将其转换回0.0

double d = 0.1;                      // 0.1
BigRational br = new BigRational(d); // 3602879701896397/71213961919824440...
double d2 = (double)br;              // 0.0

我错过了什么?我知道0.1在System.Double中无法准确表示,但肯定BigRational可以近似得到它以便往返它吗?

1 个答案:

答案 0 :(得分:1)

正如@elgonzo所说:

  

大约一年前,这已经是一个已知问题:bcl.codeplex.com/workitem/13051

参考工作项的评论者上传了一个正确读取0.1的修补程序。