我一直在尝试编写一个程序来在小数点后四舍五入 - 例如 4.45 将变成 4.50 和 3.23-3.20 等等。
为此,我试图计算小数点后有多少个数字,然后将其乘以 10 乘以我找到的那个数字,相应地加上或减去使其作为一个整体整数——例如 4.45 将首先变成 445,然后是 450,然后我再除以我找到的那个数字,所以我最终会得到 4.50。
我在技术上所做的工作,唯一的问题是计算小数点后的位数。例如,我输入 20.13 作为我的 double ,我尝试将它乘以 10 直到它等于它是 int-like 如果 201.3==201 否则我继续乘以 10。唯一的问题是它在调试中破坏了我的数字我看到它变成了 20.13 到201.299999998 而不是 201.3,这使我的循环基本上是无限的,完全违背了目的。
我的功能:
//input : The function gets a double number
//output : The function returns how many numbers are after the decimal point
public static int countDecimal(double num){
int count=0;
while(num!=(int)num){
num*=10;
count++;
}
return count;
}
有谁知道它为什么这样做以及我如何实现我的目的?我也很想知道您是否知道将 4.45 舍入到 4.5 的更简单方法,因为我的方法需要许多其他函数,而且对于一些相当基本的东西来说相当长。我看到的 java 函数只舍入到整数 - 例如 4.5 到 5。
最佳答案
这是一个非常粗略的答案,但思路就在那里。
最好的办法是将您的数字转换为字符串
String numToString = String.valueOf(num);
找到小数点的索引并删除其中的任何 >2
int decimalIndex = numToString.indexOf(".");
numToString = numToString.substring(decimalIndex, decimalIndex + 2);
最后取你的最后一个数字并相应地向上或向下舍入。
关于java - 在java中四舍五入并计算小数点后有多少个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48997575/