问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 不确定整数有几位的情况下小数点前保留前两位数字不变后面全部为0怎么做,一直没弄出来

发布网友 发布时间:2022-06-03 04:58

我来回答

3个回答

热心网友 时间:2023-10-11 23:37

原来 Math.log(1000) 不是3,这个 Math.log() 其实是 Math.ln(),它以e为底的对数,搞错了,原来我想 Math.log(1950) = 3.x 取整就是3,表示它后面有3个000,也就是先缩小1000倍取整后再放大1000倍。不过 JDK 1.5+ 提供了 Math.log10() 函数。


想来更简单的方法是直接用

BigDecimal.setScale(0, BigDecimal.ROUND_FLOOR).setScale(12);

先 Math.log10(input) 知道它有多少位 p,缩小 10^ (p-1) 倍得到前2位整数,抹掉小数位,再放大 10^ (p-1) 倍得到结果。

这个 ROUND_FLOOR 直接截尾数,再拉长到原来的精度。


如果想只留2个成为  09.12,那就得  new DecimalFormat("00.0000000000").format(input);

BigDecimal input = new BigDecimal("1234567890.123456789012");
int scale = input.scale();

BigDecimal power = new BigDecimal(String.valueOf(new BigDecimal(Math.log10(input.doubleValue())).intValue() - 1));
System.out.println("Input :" + input + ", scale :" + scale + ", Power : 10^" + power);

power = new BigDecimal("10").pow(power.intValue());

BigDecimal output = input.divide(power, 0, BigDecimal.ROUND_FLOOR);
System.out.println("Output :" + output.setScale(12).multiply(power));
System.out.println("Input :" + input + ", Output :" + input.setScale(2, BigDecimal.ROUND_FLOOR).setScale(input.scale()));


输出如下:

Input :1234567890.123456789012, scale :12, Power : 10^8
Output :1200000000.000000000000
Input :1234567890.123456789012, Output :1234567890.120000000000

热心网友 时间:2023-10-11 23:37

public static void main(String args[]){
java.util.Scanner sc=new java.util.Scanner(System.in);
System.out.println("please Enter an Integer:");
int n=sc.nextInt();
//接收输入的整数
String str=String.valueOf(n);
//把整数转化为字符串
StringBuilder sb=new StringBuilder(str);
for(int i=0;i<str.length();i++){
if(i<2){
sb.setCharAt(i, str.charAt(i));
continue;
}else sb.setCharAt(i, '0');
}
String s=sb.toString();
int e=Integer.valueOf(s);
System.out.println("输入的整数为:"+n+"\t保留前两位为:"+e);
}

热心网友 时间:2023-10-11 23:38

直接上程序
public class Test {

public static void main(String[] a) {
long num = 3242l;
int i = 1;
while (true) {
long tmp = (long)Math.pow(10, i);
long mod = num / tmp;
if (mod < 100) {
System.out.println(mod * tmp);
break;
}
i++;
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... ects scale unity3d C# 关于水平翻转 谁能帮我翻译一下这篇短文?谢谢,急! 流年似水,负尽韶华的意思 大街小巷解一生肖 大街小巷是什么生肖 大街小巷解什么生肖 大街小巷指的是什么生肖 大街小巷打一生肖? 求一见倾心第二季高清百度云资源 大街小巷打一生肖 《一见倾心:太子爷追妻记》txt下载在线阅读全文,求百度网盘云资源 大街小巷到处走是哪个生肖? 《一见倾心:腹黑王爷忙追妻》txt下载在线阅读全文,求百度网盘云资源 重生之一见倾心txt百度云网盘 《一见倾心:首席的99次告白》txt下载在线阅读全文,求百度网盘云资源 未复有能与其奇者的的奇词类活用,? 自康乐以来,未复有能与其奇者 与字什么意思 自康乐以来,未复有能与其奇者的意思是什么? 未复有能与其奇者 的意思(山川之美) scale and scope是什么意思 英语5-star reviews for its usability怎么翻译? java.math.BigDecimal类的scale()方法问题 梦见用剪刀剪破了已去世的三嫂的毛衣啥意思? 梦见剪刀 梦见老公出轨,自己把他的贵重的衣服都剪烂了 ,而且是从领口剪烂的 剪衣服 请问:林冲是一位什么样的形象? 我梦见好朋友用剪刀剪烂我的衣服,怎么回事? 江西省教育考试院艺术类考生分数线是多少? 江西省艺术类录取分数,如何换算 江西省艺术类录取分如何换算 在哪个软件可以买到50块钱以下的口袋打印机? 西安口碑不错的铁路学校有哪些? 优质的HDPE排水管具备哪些特质? hdpe型塑钢缠绕排水管是什么管子 怎么投诉别人不是好友可以投诉吗 为什么我换手机后就没来电显示了 我的号码为什么没有来电显示了 电话来电显示看不见怎么办 为什么没有来电显示 为什么我手机来电显示没了?