JSD-8421 开源任务材料
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.2 KiB

/*
* Copyright (C), 2015-2020
* FileName: NORMSDIST
* Author: Louis
* Date: 2020/5/22 15:50
* Description: NORMSDIST
* History:
* <author> <time> <version> <desc>
*/
package com.fr.plugin.hdbk.function;
import com.fanruan.api.i18n.I18nKit;
import com.fanruan.api.log.LogKit;
import com.fr.base.Utils;
import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.hdbk.Constants;
import com.fr.record.analyzer.EnableMetrics;
import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive;
import com.fr.stable.fun.Authorize;
import com.fr.third.org.apache.commons.math3.distribution.NormalDistribution;
import java.math.BigDecimal;
import static com.fr.plugin.hdbk.Constants.PLUGIN_ID;
/**
* <Function Description><br>
* <NORMSDIST类-正态累计分布函数>
*
* @author Louis
* @since 1.0.0
*/
@EnableMetrics
@Authorize(callSignKey = Constants.PLUGIN_ID)
public class NORMSDIST extends AbstractFunction {
private static final long serialVersionUID = -422355325281808141L;
public NORMSDIST() {
}
/**
* args参数: z需要计算器分布的数值
*
* @param args
* @return
*/
@Override
@Focus(id = PLUGIN_ID, text = "Plugin-hdbk", source = Original.PLUGIN)
public Object run(Object[] args) {
if (!PluginContexts.currentContext().isAvailable()) {
LogKit.error(I18nKit.getLocText("Plugin-hdbk_Expired"));
return Primitive.ERROR_VALUE;
}
if (args.length < 1) {
return Primitive.ERROR_VALUE;
}
try {
double z = Double.parseDouble(Utils.objectToString(args[0]));
NormalDistribution normalDistributioin = new NormalDistribution(0, 1);
double result = normalDistributioin.cumulativeProbability(z);
result = new BigDecimal(result).setScale(9, BigDecimal.ROUND_HALF_UP).doubleValue();
return result;
} catch (Exception e) {
LogKit.error(e.getMessage(), e);
return Primitive.ERROR_VALUE;
}
}
@Override
public Type getType() {
return OTHER;
}
}