🙏废话不多说系列,直接开干🙏
一、第三方依赖
(1)Maven 依赖
<dependency>
<groupId>org.decampo</groupId>
<artifactId>xirr</artifactId>
<version>1.2</version>
</dependency>
(2)程序演示
public static void main(String[] args) {
double rate = new Xirr(
new Transaction(-1000, "2016-01-15"),
new Transaction(-2500, "2016-02-08"),
new Transaction(-1000, "2016-04-17"),
new Transaction( 5050, "2016-08-24")
).xirr();
// Prints 0.2504234710540838
System.out.println(rate);
}
⚠注意:excel(WPS 和 Office)和此程序的差异!
二、再次封装程序
针对 org.decampo.xirr 封装,得到 java-xirr 依赖包程序。(这个自己网上下载哈,见 附录)
(1)测试程序
import com.littlefox.IRRUtil;
import com.littlefox.xirr.Transaction;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 封装 XIRR 程序
*/
public class XirrUtil {
public static void main(String[] args) {
testXirr();
testIrr();
}
public static void testXirr(){
List list = Arrays.asList(
new Transaction(-10000,"2008-01-01"),
new Transaction(3250,"2009-02-15"),
new Transaction( 2750,"2009-04-01"),
new Transaction(4250,"2008-10-30"),
new Transaction(2750,"2008-03-01")
);
//Assert.assertEquals("0.3733625335190808", s);
String s = IRRUtil.xirr(list, 365).toString();
//Assert.assertEquals("0.3733625335188315", s1);
String s1 = IRRUtil.xirr(list, 365, 0.1D).toString();
System.out.println(s + " " + s1);
}
public static void testIrr(){
Double[] arrays= {-700000.0,120000.0,150000.0,180000.0,210000.0,260000.0};
List<Transaction> list= Arrays.stream(arrays).map(x -> new Transaction(x)).collect(Collectors.toList());
//Assert.assertEquals("0.08663094803653153", s);
String s = IRRUtil.irr(list).toString();
//Assert.assertEquals("0.0866309480365316", s1);
String s1 = IRRUtil.irr(list, 0.3D).toString();
System.out.println(s + " " + s1);
}
}
得出结果:
0.3733625335190808 0.3733625335188315
0.08663094803653153 0.0866309480365316
附录
- XIRR 计算语法:XIRR 函数 (microsoft.com)
- XIRR maven 仓库地址:org.decampo : xirr - Maven Central Repository Search
- 国内兼容XIRR的JAR包:java-irr/IRRUtil.java at master · rockychen1221/java-irr · GitHub【附件】
🙏至此,非常感谢阅读🙏