我在接受采访时被问到这个问题,面试官告诉我有一个有效的方法来获得输出。需要添加两个double
值:
double d = double.MaxValue;
double d1 = double.MaxValue;
var c = d + d1;
但是我得到了double.PositiveInfinity
。我需要在输出中存储一个大数字。
答案 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