Ada的双精度?

时间:2010-04-20 19:43:24

标签: double precision ada numeric

我对Ada很新,并试图看看它是否提供双精度类型。我看到我们有浮动和

Put( Integer'Image( Float'digits ) );
我的机器上的

给出的值为6,这对于数值计算是不够的。

Ada是否有双重和长双重类型,如C?

非常感谢...

2 个答案:

答案 0 :(得分:7)

比这更复杂。

编译器必须支持的唯一预定义浮点类型是Float。编译器可以选择支持Short_FloatLong_Float。您应该能够查看编译器文档的appendex F以查看它支持的内容。

实际上,您的编译器几乎将Float定义为32位IEEE浮点数,将Long_Float定义为64位。请注意,C使用floatdouble也可以这样做。 C实际上并没有定义那些的大小。

如果您绝对必须具有certian精度(例如:您正在与必须使用IEEE 64位的外部资源共享数据),那么您应该定义自己的浮点类型精确。这将确保您的代码可移植到您移动到的任何平台或编译器,或者它将产生编译器错误,以便您可以解决问题。

答案 1 :(得分:6)

您可以创建任何您喜欢的尺寸Float。很长一段时间,它将是:

type My_Long_Float is digits 11;
对于像这样的事情,

Wiki Books是一个很好的参考。