鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
10 天以前 2815d027a6112c38373a8e37bf17c641791e5a39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.iailab.module.ansteel.common.utils;
 
import java.math.BigDecimal;
 
/**
 * 电力工具类
 *
 * @author PanZhibao
 * @Description
 * @createTime 2025年05月28日
 */
public class PowerUtil {
 
    /**
     * 计算功率因数 p /(根号:p²+Q²)
     **/
    public static Double calculateCos(Double PValue, Double QValue) {
        if (PValue == null || QValue == null) {
            return null;
        }
 
        // 绝对值
        PValue = Math.abs(PValue);
        QValue = Math.abs(QValue);
        //PValue或QValue 小于 1 直接判断为关闭返回0
        if (QValue < 0.01) {
            return 0.0;
        } else {
            BigDecimal result = new BigDecimal(PValue).divide(BigDecimal.valueOf(Math.sqrt(Math.pow(PValue, 2) + Math.pow(QValue, 2))), 2, BigDecimal.ROUND_HALF_UP);
            if (result.compareTo(BigDecimal.ONE) >= 0) {
                return 0.99;
            }
            return result.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
        }
    }
}