本文描述QT c++的双精度数拆分和合并,即双精度浮点数拆为四个16位无符号整数以及将四个16位无符号整数组合为双精度浮点数。
开发平台:win10+QT6.2.4 MSVC2019 64 bit
在本文的最好列出了代码和可执行文件打包下载链接(可直接使用)。
1.界面如下
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.可执行文件下载链接如下: