小数点后200位的C++类型?

C++ type with 200 digits after decimal point?

我的学校有一个项目,其目标是创建执行操作的简单 "Virtual Machine"。

为此,我们可以存储一些带有类型的数字,它们是: int8、int16、int32、float、double 和 big decimal。

我唯一不知道的类型是 "big decimal",它被描述为:"The maximum of digits to display after the decimal point is are float(7), double(15), bigdecimal(200)."

这么大的十进制类型小数点后可以有200位。

C++ 中的任何类型都可以做到这一点吗?如果我必须处理字符串,那么操作会更复杂...

提前致谢!

PS:“• 所有(外部)库,STL 除外,均被明确禁止”

C++中没有"big-decimal"类型;从你对问题的描述来看,你似乎被要求以非常高的精度实现你自己的类型。

有不止一种方法可以做到这一点。这里有一些 hints/potential 方向:

  • 若d1 ... dk为数字,则k位数0.d1d2...dk等于10-k * d1 d2 ... dk (即认为尾数和指数)。
  • 200 = 很多。不要尝试手动将您的号码放入足够多的基本类型中以获得 200 位数字。
  • 标准库有几个 类 您可以使用。不过,您可以 hardly go wrong by basing your work on an std::vector。当然,你到底想在那个向量中放什么是另一个问题。