gpt4 book ai didi

java - 随机化 double 的小数部分

转载 作者:行者123 更新时间:2023-11-30 07:47:39 25 4
gpt4 key购买 nike

我有以下方法,它将 GPS 坐标作为字符串,并将它们转换为最多 6 位小数的 double 。现在我尝试从第一个小数点开始随机化小数点。

public void randomizeCoordinate(String latString, String lonString)
{
double lat = Double.parseDouble(latString);
double lon = Double.parseDouble(lonString);

DecimalFormat df = new DecimalFormat("#.######");
df.setRoundingMode(RoundingMode.HALF_EVEN);
for (Number n : Arrays.asList(lat, lon))
{
Double d = n.doubleValue();
System.out.println(df.format(d));
}
}

例如,如果我有 2.34,我希望随机化结果类似于 2.493473 或 2.294847 或 2.346758

第一个小数点(在本例中为 2.34 中的 3)最多只能更改一位数字。随机向上或向下。前导小数点可以随机更改为任何内容。

最好的方法是什么?

最佳答案

Random rand = new Random();
double x = ...;

x = ((int)(x*10) + rand.nextDouble()*2 - 1)/10.0;

乘以 10 并截断以获取包括第一个小数在内的数字,添加 -1 到 1 之间的随机数,然后缩小。

请注意,您的 double 不会只有 6 位小数;这些数字不是十进制数字。要使输出显示 6 位小数,您需要使用要求 6 位小数的格式来格式化数字。

关于java - 随机化 double 的小数部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700868/

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