1

我正在使用 c++ 运行物理模拟,为了获得精确的结果,我正在使用 boost::multiprecision。到目前为止,我使用的是 cpp_dec_float_50 类型,但是,现在我需要测试不同精度的不同变量的模拟。

那么,如何创建新类型,例如 cpp_dec_float_27(27 位精度)?

我试图更改模板代码:

namespace boost{ namespace multiprecision{
template <unsigned Digits10, class ExponentType = boost::int32_t, class Allocator = void>
class cpp_dec_float;
typedef number<cpp_dec_float<50> > cpp_dec_float_50;
typedef number<cpp_dec_float<100> > cpp_dec_float_100;
}} // namespaces

但我有很多问题。

4

1 回答 1

2

如果我理解正确,您正在尝试更改您的 boost 安装,这是您永远不应该这样做的,因为其余的 boost 源可能依赖于它。

如果你想定义你自己的精度,你需要一个简单的 typedef:

typedef number<cpp_dec_float<27> > cpp_dec_float27;

你准备好了。

但是,如果您的函数依赖于 cpp_dec_float100 类型,您可能需要考虑使用这些函数的模板来接受多精度。

于 2015-11-15T13:20:03.447 回答