Java 如何反转0.5这样的十进制数
我的问题是如何在java中反转十进制数 数字,如0.5、0.8等 我所有用双变量而不是int来复制代码的尝试都会导致终端输出“Infinity”或“Infinity”的符号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;
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++;
}