java - Math.log 负返回可能会损害 Kt/V 计算

标签 java

我是java编程新手,并且使用它的数学类,所以我的问题可能是菜鸟的问题,解决方案是显而易见的。然而,如果有人告诉我我错在哪里,我宁愿在这里拿我的声誉冒险,并被投进 hell 深渊。
所以这里有一个简单的代码,应该通过公式 spKT/V = -ln(R - 0.008 * t) + (4 - 3.5 * R) * 0.55 * (UF/V) 计算 singlepool KT/V (肾脏病学中的计算)
我有一本教科书,其中 KT/V 具有提到的值:
R = 0.35,t = 3,UF/V = 0.06 最终结果为 1.21。
我在编译后运行这个类得到-1.029。
我有两个问题:
1. 为什么我得到负数以及如何将其更改为正数? (猜测,这与数学日志有关)
2. 是我代码搞砸了还是课本错了?如果那是我错了,要改变什么才能得到1.21?

任何意见都将受到高度赞赏。提前感谢大家。

import java.*;
public class nephro {

public static void main (String[] args) {

    System.out.println(spKTV());

}
public static double logrfm() {
    double logX = x(0.35, 3);
    double left = Math.log(logX);
    return left;
}
public static double x(double R, double t) {
    double x_res = (R - 0.008 * t);
    return x_res;
}
public static double rufv (double R, double UFV) {
    double rufv = (4 - 3.5 * R) * (0.55 * UFV);
    return rufv;
}
public static double spKTV(){
    double result = logrfm() + rufv(0.35, 0.06);
    return result;
}
}

最佳答案

1) 由于计算错误,您得到了负值。

2)这本书是正确的(你可以用袖珍计算器检查一下)。代码中的问题在这里:

double left = Math.log(logX);

应该是:

double left = - Math.log(logX);

顺便说一句。如果代码不分成这么多方法,会更容易理解。

关于java - Math.log 负返回可能会损害 Kt/V 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283858/

相关文章:

java - 将 JSON 响应转换为 List<T>

java - Java 静态方法没有 RMI

Java Streams 在同一个列表上循环两次

java - 检查用户是否连接到互联网,如果没有则提示用户开启数据服务android

java - 在 Maven 中运行 JUnit 测试,无需构建和复制文件

java - 尝试在 Struts2 中 Autowiring Spring Data MongoRepository

java - 直接从 url 读取 - 不起作用

java - 为什么用充气城堡解密后会附加这些方形符号?

java - java.io 中装饰流的限制是什么?

java - 如何为@FindBy 注解实现用户类型?