在NTL库中设置RR的精度

时间:2015-11-17 23:37:41

标签: floating-point

我在NTL库中使用RR类。我将精度设置为128,因为我需要更高的精度来进行程序中的计算。从RR的文档中,我看到它提供从最小53位和最大到机器的字大小但是当我用cout打印值时,它只有9个十进制数字。

当我分别打印尾数和指数部分时,我发现打印的9个十进制数字是在舍入后。是因为cout?

1 个答案:

答案 0 :(得分:0)

只需使用 TMP = new Polygon(); // this.getX() and this.getY() return an int // consider getX() and getY() as x0 and y0 int x1,x2,x3,x4; int y1,y2,y3,y4; x1 = (int) Math.round(this.getX() - this.getLength() * Math.cos(this.getAngle())); y1 = (int) Math.round(this.getY() - this.getLength() * Math.sin(this.getAngle())); x3 = (int) Math.round(x1 - this.getWidth() * Math.cos((Math.PI / 2) - this.getAngle())); y3 = (int) Math.round(y1 + this.getWidth() * Math.sin((Math.PI/2) - this.getAngle())); x4 = (int) Math.round(this.getX() - this.getWidth() * Math.cos((Math.PI/2) - this.getAngle())); y4 = (int) Math.round(this.getX() + this.getWidth() * Math.sin((Math.PI/2) - this.getAngle())); x2 = (int) Math.round((x1 + x3) / 2 + Math.cos(this.getAngle()) * this.getLength() / 2); y2 = (int) Math.round((y1 + y3) / 2 + Math.sin(this.getAngle()) * this.getLength() / 2); TMP.addPoint(this.getX(), this.getY()); TMP.addPoint(x1, y1); TMP.addPoint(x2, y2); TMP.addPoint(x3, y3); TMP.addPoint(x4, y4); this.setPolygon(TMP); 来提高输出的精度,其中RR::SetOutputPrecision(d);是您希望答案表示的位数。