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