pyspark 保留小数位数-笔记

pyspark中对于数值类型的值进行小数位数的保存可以通过两种方式处理,一个是select中结合functions里的bround,另一个是selectExpr中的结合round。 pyspark.sql中的functions.bround进行处理。 

方式1 : functions.bround('columnName',scale=value)

scale表示保留的小数位数,四舍五入。

#构建dataframe
rdd = sc.parallelize([("Sam", 28, 88.52, "M"),
                      ("Flora", 28, 90.55, "F"),
                      ("Mey", 1, None, "M"),
                      ("Chery", 7, 80.23, "F")])
test = rdd.toDF(["name", "age", "score", "sex"])
test.show()

from pyspark.sql import functions 
test2= test.select('name','age',functions.bround('score',scale=1).alias('socre'),'sex') # 进行了四舍五入的保留小数位数,scale表示保留的小数位数
test2.show() 

结果:score列 只保留1位小数了

+-----+---+-----+---+
| name|age|socre|sex|
+-----+---+-----+---+
|  Sam| 28| 88.5|  M|
|Flora| 28| 90.6|  F|
|  Mey|  1| null|  M|
|Chery|  7| 80.2|  F|
+-----+---+-----+---+

方式2 selectExpr中 round 

## selectExpr中 round 
test3 = test.selectExpr('name','age','round(score,1) as score','sex')
test3.show()

结果同上: 

+-----+---+-----+---+
| name|age|score|sex|
+-----+---+-----+---+
|  Sam| 28| 88.5|  M|
|Flora| 28| 90.6|  F|
|  Mey|  1| null|  M|
|Chery|  7| 80.2|  F|
+-----+---+-----+---+
### Qt 中设置或保留小数位数的方法 在 Qt 开发中,可以通过多种方式实现浮点数的小数位数控制。以下是几种常见的方法及其具体实现: #### 使用 `QString::number` 控制小数位数 通过 `QString::number` 方法可以方便地指定浮点数的显示格式并保留特定数量的小数位数。例如: ```cpp #include <QString> #include <QDebug> double value = 32.0; QString str = QString::number(value, 'f', 2); // 设置保留两位小数 qDebug() << str; // 输出 "32.00" ``` 上述代码中的 `'f'` 参数表示固定精度模式,而第三个参数 `2` 则指定了要保留小数位数[^1]。 --- #### 使用 `QString::asprintf` 格式化字符串 如果需要更复杂的格式化操作(如添加百分号),可以使用 `QString::asprintf` 方法。此方法类似于 C 风格的 `sprintf` 函数,允许灵活定义输出格式。例如: ```cpp #include <QString> #include <QDebug> double value = 0.12345; QString formattedValue = QString::asprintf("%.2f%%", value * 100); qDebug() << formattedValue; // 输出 "12.35%" ``` 在此示例中,`%.2f` 表示保留两位小数,而 `"%%"` 转义为单个百分号字符[^2]。 --- #### 使用 QSpinBox 或 QDoubleSpinBox 的 `setDecimals` 方法 当涉及用户界面控件时,比如 `QDoubleSpinBox`,可以直接调用其 `setDecimals` 方法来设定输入框中小数部分的最大长度。例如: ```cpp #include <QDoubleSpinBox> #include <QApplication> int main(int argc, char **argv) { QApplication app(argc, argv); QDoubleSpinBox spinBox; spinBox.setRange(-1000.0, 1000.0); // 设定范围 spinBox.setValue(123.456); // 初始化值 spinBox.setDecimals(2); // 保留两位小数 spinBox.show(); return app.exec(); } ``` 这里,`spinBox.setDecimals(2)` 明确规定了该控件只支持最多两位小数的数值输入[^3]。 --- #### 总结 以上三种方法分别适用于不同的场景: - 如果仅需简单处理浮点数,则推荐使用 `QString::number`; - 若有复杂格式需求(如附加单位、特殊符号等),可选用 `QString::asprintf`; - 对于 GUI 应用程序中的交互组件配置,应优先考虑利用 `QDoubleSpinBox` 提供的功能接口完成相应调整。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值