本文描述QT c++的双精度数拆分和合并,即双精度浮点数拆为四个16位无符号整数以及将四个16位无符号整数组合为双精度浮点数。

开发平台:win10+QT6.2.4 MSVC2019 64 bit

在本文的最好列出了代码和可执行文件打包下载链接(可直接使用)。

1.界面如下

QT c++ 双精度数拆分和组合 Tool-LMLPHP

2.头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
union DoubleSplit
{
    double doubleValue; // 64位,双精度数
    struct {
        unsigned short  Word0;
        unsigned short  Word1;
        unsigned short  Word2;
        unsigned short  Word3;
    } sDoubleValues;       // 结构体,包含4个16位无符号整数
    unsigned short ShortArray[4];
};

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_bt_DoubleTo4Words_clicked();

    void on_bt_4WordsToDouble_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

3.cpp文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_bt_DoubleTo4Words_clicked()//将双精度浮点数拆为四个16位无符号整数
{
    DoubleSplit ds;
    ds.doubleValue=ui->doubleSpinBox->value();
    ui->spinBox0->setValue((unsigned short)ds.ShortArray[0]);
    ui->spinBox1->setValue((unsigned short)ds.ShortArray[1]);
    ui->spinBox2->setValue((unsigned short)ds.ShortArray[2]);
    ui->spinBox3->setValue((unsigned short)ds.ShortArray[3]);
   ;
}


void Widget::on_bt_4WordsToDouble_clicked()//将四个16位无符号整数合并为双精度浮点数
{
    DoubleSplit ds;
    ds.ShortArray[0]=(unsigned short)ui->spinBox0->value();
    ds.ShortArray[1]=(unsigned short)ui->spinBox1->value();
    ds.ShortArray[2]=(unsigned short)ui->spinBox2->value();
    ds.ShortArray[3]=(unsigned short)ui->spinBox3->value();
    ui->doubleSpinBox->setValue((double)ds.doubleValue);
}

4.代码下载链接如下:

https://download.csdn.net/download/weixin_39926429/88962945

5.可执行文件下载链接如下:

https://download.csdn.net/download/weixin_39926429/88963277

03-15 09:20