Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何反转0.5这样的十进制数_Java - Fatal编程技术网

Java 如何反转0.5这样的十进制数

Java 如何反转0.5这样的十进制数,java,Java,我的问题是如何在java中反转十进制数 数字,如0.5、0.8等 我所有用双变量而不是int来复制代码的尝试都会导致终端输出“Infinity”或“Infinity”的符号 import java.util.*; public class Example { public static void main(String[] args) { int d = 0, Result = 0;

我的问题是如何在java中反转十进制数

数字,如0.5、0.8等

我所有用双变量而不是int来复制代码的尝试都会导致终端输出“Infinity”或“Infinity”的符号

import java.util.*; 
public class Example
{
    public static void main(String[] args)
    {                       
        int d = 0, 
               Result = 0;

        Scanner in = new Scanner(System.in); 

        System.out.print("enter a number: ");

        d = Integer.parseInt(in.nextLine()); 

        while(d > 0)
        { 
            Result = (Result * 10) + d % 10; 
            d = d / 10;
        } 

        System.out.println("\nThe Reversed Number Is: " + Result);          

    }
} 
编辑:对不起,伙计们,我想把输出放进去

因此,如果要运行此程序,输出将如下所示(取决于您输入的数字)

我期望的输出如下所示

Enter a decimal number: 0.5

The Reversed number is: 5.0 


import java.util.*; 
public class Example
{
    public static void main(String[] args)
    {                       
        double d = 0, 
               Result = 0;

        Scanner in = new Scanner(System.in); 

        System.out.print("enter a number: ");

        //d = Double.parseDouble(in.nextLine()); 
        //^ That will not cut off any result lol

        d = in.nextDouble(); 

        while(d > 0)
        { 
            Result = (Result * 10) + d % 10; 
            d = d / 10;
        } 

        System.out.println("\nThe Reversed Number Is: " + Result);          

    }
} 

enter a number: 0.5

The Reversed Number Is: Infinity
// The above result used d = Double.parseDouble(in.nextLine()) 



 //The below output used d = in.nextDouble(); 
这两种接受输入的方法之间唯一的区别是 其中一个原因是人们没有按照指示行事,而另一个则没有 当然,没有尝试或捕获等。。或者,如果输入了除数字以外的任何内容,并且不需要输入,则终止此处的任何内容。关键是这两种输入方法将产生相同的结果

enter a number: 5.0

The Reversed Number Is: Infinity

您是否满足于反转字符串表示形式

String input = d.toString();
String reversed = new StringBuffer(input).reverse().toString();

System.out.println("The Reverse of input is " + reversed);   

我会使用BigDecimal,因为您使用的是小数。0.1是以2为基数的重复数字。所以它会被截断

BigDecimal d = new BigDecimal(in.nextLine());
对于小数,当你像整型一样除以10时,值不会变为零。123除以10等于12.3。所以你以前的算法是行不通的。你也不知道这个数字的右边有多远。可以这样做:

int n = 0;
while(d.remainder(BigDecimal.ONE).intValue()>0){
    d = d.movePointRight(1);
    n++;
}

循环完成后,您将得到一个实际上是整数的BigDecimal。您可以使用以前的算法,但需要将小数点放回正确的位置。n代表什么。

所需的输出是什么?我不知道你说的反向是什么意思。你说的“反向”是什么意思?“0.5”的反面是什么?不相关但非静态的变量名应使用所有小写字母命名,以遵循Java惯例。是
0.123
321.0
的“反面”吗?您是要反转一个数字,还是它的字符串表示形式?如果反转
1.00000000000000001
,会发生什么情况?如果使用Integer.parseInt,则会丢失小数点后的所有值。编辑:抱歉,我误解了您的评论,是的,我非常乐意这样做,我只是好奇,是否可以用一个双变量来做,而不必做一系列的转换。@听起来像是在颠倒数字的“字符串表示法”。用户输入一个字符串,你把它变成一个数字,你把它变成一个字符串,你把字符串反转。不是吗?parseInt()转换为整数,如果我编写了int类型的函数,并返回结果,则由于它已从字符串转换为int变量,因此该函数将正常工作。我知道如何使用RC建议的方法进行此操作,但我想知道是否可能使用double@Afflicted当前位置我想matt想问的问题是,为什么你首先要有一个数字这个问题已经回答了。我甚至不知道如何开始回答你的评论,但我会尝试“为什么你想在第一位有一个数字”,因为我问是否可以反转十进制数,我用整数设计了一个示例程序,并解释说如果可能的话,我想用双变量来重现这个结果。我已经明白了可以用字符串来完成,这最终是最简单的方法。再说一遍,为什么我想要数字?因为问题是关于倒数。又一次得到了回答!是的,我知道代码因为除法而无法工作,这就是为什么我想试试BigDecimal,谢谢你的帮助!
int n = 0;
while(d.remainder(BigDecimal.ONE).intValue()>0){
    d = d.movePointRight(1);
    n++;
}