添加double.MaxValue + double.MaxValue

时间:2014-02-18 13:40:07

标签: c# double

我在接受采访时被问到这个问题,面试官告诉我有一个有效的方法来获得输出。需要添加两个double值:

double d = double.MaxValue;
double d1 = double.MaxValue;

var c = d + d1;

但是我得到了double.PositiveInfinity。我需要在输出中存储一个大数字。

3 个答案:

答案 0 :(得分:4)

也许面试官打算让你使用BigInteger

using System.Numerics;

double d = double.MaxValue;
double d1 = double.MaxValue;

var c = new BigInteger(d) + new BigInteger(d1);
Console.WriteLine(c); // 359538626972463...

答案 1 :(得分:0)

请记住,许多面试问题并不适合您找到解决方案,而是要了解如何解决问题。

所以正确的答案是 - 如何解决它?如果您选择使用Biginteger,则可能会因为失去浮点精度而感到恐慌。

另一种可能性是创建一个“BigFloat”类,在内部以任意数量的double s存储数据,并对这些数据进行数学计算以生成(理论上)无限大的浮点数。 (与BigInteger的原理相同,但算术不同)。

同样,焦点可能不在答案上,而在于思考的方式。

答案 2 :(得分:-2)

将d和d1声明为double,将c声明为十进制,我认为它会起作用!

请注意:http://fr.wikibooks.org/wiki/Programmation_C_sharp/Les_types_de_base_et_les_d%C3%A9clarations