gpt4 book ai didi

java - 计算数轴上的正值和负值

转载 作者:行者123 更新时间:2023-12-01 10:10:47 26 4
gpt4 key购买 nike

我真的不知道如何提出我的问题,但我会尝试。我想做的基本上是用 double 值替换用户输入中的符号。替换过程目前不相关,我的问题发生在计算替换时。想象一条包含负数和正数的数轴,例如。从 -5 到 5(maxX 那么就是 10)。想象一下scale作为我需要的替换之间的步长。所以我需要计算的替换将是:-5.0, -4.8, -4.6, -4.4, [...], 4.4, 4.6, 4.8, 5.0 (因为:n/scale = 0/5, 1/5, 2/5 [...])。这是我的代码(仅用于计算):

int maxX = 10;
int scale = 5;

public void rep(){
double rep = 0;
int n = 0;
for (int k = (-maxX/2)*scale; k <= (maxX/2)*scale; k++){

if (k < 0){
rep = (double) n/scale +((int) ((k)/scale));
System.out.println("k: "+k+" "+rep);
}

if (k >= 0){
rep = (double) n/scale +((int) ((k)/scale));
System.out.println("k: "+k+" "+rep);
}

if (n < scale-1){
n++;
} else {
n = 0;
}

}
}

工作正常,结果为k => 0符合要求,但不幸的是 k < 0 的结果不能满足我的需求,因为它们是错误的(控制台输出):

k: -25               -5.0 // correct 
k: -24 -3.8 // wrong
k: -23 -3.6 // wrong
k: -22 -3.4 // wrong
k: -21 -3.2 // wrong
k: -20 -4.0 // correct
k: -19 -2.8
k: -18 -2.6
k: -17 -2.4
k: -16 -2.2
k: -15 -3.0
k: -14 -1.8
k: -13 -1.6
k: -12 -1.4
k: -11 -1.2
k: -10 -2.0
k: -9 -0.8
k: -8 -0.6
k: -7 -0.4
k: -6 -0.19999999999999996
k: -5 -1.0
k: -4 0.2
k: -3 0.4
k: -2 0.6
k: -1 0.8
k: 0 0.0
k: 1 0.2
k: 2 0.4
k: 3 0.6
k: 4 0.8
k: 5 1.0
k: 6 1.2
k: 7 1.4
k: 8 1.6
k: 9 1.8
k: 10 2.0
k: 11 2.2
k: 12 2.4
k: 13 2.6
k: 14 2.8
k: 15 3.0
k: 16 3.2
k: 17 3.4
k: 18 3.6
k: 19 3.8
k: 20 4.0
k: 21 4.2
k: 22 4.4
k: 23 4.6
k: 24 4.8
k: 25 5.0

要更改什么才能输出 k < 0将匹配-5.0, -4.8, -4.6, -4.4, [...] ,我无法理解它。谢谢。

最佳答案

如果您想使用您的代码,请尝试 (int)Math.floor((double)k/scale) 而不是 (k)/scale

或者,您可以在循环中将 1/scale 加起来,但由于精度问题,您需要使用 BigDecimal:

int maxX = 10;
int scale = 5;
BigDecimal start = BigDecimal.valueOf( -maxX/2 );
BigDecimal end = BigDecimal.valueOf( maxX/2 );
BigDecimal step = BigDecimal.valueOf( 1.0/scale );
for( BigDecimal v = start; v.compareTo( end) <= 0; v = v.add( step ) )
{
System.out.println("k:" + v.multiply( BigDecimal.valueOf( scale ) ).intValue() + " " + v );
}

关于java - 计算数轴上的正值和负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36135154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com