如果它们是零,则setprecision()给出额外的数字

时间:2018-06-16 15:32:11

标签: c++

我使用了setprecision(8),但是当我计算asin(1)时,它返回0.017452406(10位数,而不是8位!)那里可以做什么?

2 个答案:

答案 0 :(得分:0)

要解决十进制数字问题,您需要使用std::fixed

如[{3}}

中所述
  

将str流的floatfield格式标志设置为fixed。

     

当floatfield设置为fixed时,使用定点表示法写入浮点值:该值用精确字段(精度)指定的小数部分中的数字精确表示,并且没有指数部分。

答案 1 :(得分:0)

要从评论中回答您的要求:"我需要使数字(整数和小数部分)以最多8位数显示。"您可以使用documentation

QGraphicsView

输出

class Widget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)    
        self.btn = QPushButton("Add Line")

        self.gv = QGraphicsView()
        self.scene = QGraphicsScene(self)
        self.gv.setScene(self.scene)
        self.gv.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform)

        lay = QHBoxLayout(self)
        lay.addWidget(self.btn)
        lay.addWidget(self.gv)
        script_dir = sys.path[0]

        image_loc = os.path.dirname(script_dir) + '/testproject/configs/files/lena.png'
        print(image_loc)
        #self.p_item = self.scene.addPixmap(QPixmap("lena.png"))
        self.p_item = self.scene.addPixmap(QPixmap(image_loc))

        self.btn.clicked.connect(self.add_line)

        self.gv.viewport().installEventFilter(self) # <----

    def add_line(self, event):
        import pprint
        print(pprint.pprint(dir(event)))

    def eventFilter(self, obj, event):
        if obj is self.gv.viewport():
            if event.type() == QEvent.MouseButtonPress:
                print('mouse press event = ', event.pos())
            elif event.type() == QEvent.MouseButtonRelease:
                print('mouse release event = ', event.pos())

        return QWidget.eventFilter(self, obj, event)