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

时间:2017-07-21 15:02:07

标签: c++ calculator precision bigdecimal

我为我的学校设计了一个项目,其目标是创建简单的虚拟机"执行操作的人。

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

我不知道的唯一类型是"大小数",用以下内容描述:"小数点后显示的最大位数是float(7) ,double(15),bigdecimal(200)。"

如此大的十进制类型在小数点后可以有200位数。

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

提前谢谢你!

PS:"•除了STL之外的所有(外部)库都是明确的禁止"

1 个答案:

答案 0 :(得分:3)

C ++中没有“大小数”类型;从你对这个问题的描述来看,你似乎倾向于以非常高的精度实现你自己的类型。

有多种方法可以做到这一点。以下是一些提示/潜在方向:

  • 如果d 1 ... d k 是数字,则k位数字0.d 1 d 2 ... d k 等于10 -k * d 1 d 2 .. .d k (即思考尾数和指数)。
  • 200 =很多。不要试图在足够的基本类型中手动调整您的号码以获得200位数字。
  • 标准库有几个可以使用的类。不过,你可以hardly go wrong by basing your work on an std::vector。当然,你想要放在那个矢量中的是一个不同的问题。