首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中将双精度型中的数字移动到末尾而不转换为字符串

如何在Java中将双精度型中的数字移动到末尾而不转换为字符串
EN

Stack Overflow用户
提问于 2018-08-30 06:40:13
回答 1查看 228关注 0票数 3

我正在尝试让我的数字将第一个字符移动到末尾。

例如,我会有我的双d。

代码语言:javascript
复制
double d = 12345.6;  
double result = 2345.61;

目前,我使用:删除d的第一个字符:

代码语言:javascript
复制
d = d % (int) Math.pow(10, (int) Math.log10(d));

但我不知道如何存储我删除的字符,所以我可以把它放在最后。我知道我可以将d转换为数组或字符串,但如果可能的话,我希望将其保留为双精度。

我使用Instant.now从纳秒时钟获取双精度数,所以我可以保证它从一个8位正整数开始,我首先添加.0,这样我就可以使其成为双精度数。我知道我可以只使用字符串(就像我在文章中提到的那样),但我想知道是否有一种方法可以不进行转换。

感谢您的帮助!

(这是我的第一篇文章,如果不好,我深表歉意)

EN

回答 1

Stack Overflow用户

发布于 2018-08-31 01:00:33

这是一个相当棘手的问题,这不是一个有效的答案,但它非常接近。我遇到的唯一麻烦是java将小数添加到双精度数的末尾,因为它不能很好地表示数字。我的解决方案可能会让你走上正确的道路。appendChar搞砸了,因为它把数字加到了双精度数的末尾,而不是这个问题。

代码语言:javascript
复制
public static void main(String[] args) {
        double test = 4234.1211;
        boolean hasDecimals = test % 1 > 0;
        double[] leadChar = getLeadDigitAndMulti(test);
        double appendedValue = appendLeadChar(test, (int) leadChar[1], hasDecimals);
    }


    public static double[] getLeadDigitAndMulti(double value) {
        double[] result = new double[2];
        int multiplier = 10;
        int currentMultiplier = 1;
        while (value > currentMultiplier) {
            currentMultiplier *= multiplier;
        }

        currentMultiplier /= multiplier;
        double trail = value % (currentMultiplier);
        result[0] = currentMultiplier;
        double lead = value - trail;
        lead /= currentMultiplier;
        result[1] = lead;
        return result;
    }


    public static double appendLeadChar(double value, int leadChar, boolean hasDecimals) {
        if (!hasDecimals) {
            return (value * 10) + leadChar;
        }

        int multiplier = 10;
        double currentMultiplier = 1;
        while (value > 0) {
            value %= currentMultiplier;
            currentMultiplier = currentMultiplier / multiplier;
        }

        return 0;
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52087016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档