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(); } } }