java 按比例分配后得到小数,将小数取整,但不改变总数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 按比例分配后得到小数,将小数取整,但不改变总数相关的知识,希望对你有一定的参考价值。

比如10,分成3份,每个是3.33333,然后取整,变成类似,3,3,4,或者4,2,2等等,最后总数加在一起还是10

别想着这样分呗,你分成3块,第一份取i=1,第二份取j=1,第三份取sum=10,k = sum-(i+j)
然后第二次就取,i=1 ,j=2,sum=10,k = sum-(i+j),懂意思吧追问

重点:按比例,这个比例不是确定的

追答

不确定 你就随机 前 n-1个数呗,当然你随机的时候需要给后面的n个至少保留1,或者不保留吧都行,当然这种比例很不公平,如果你需要公平的话,可以参考二倍均值法

参考技术A 1、float a = 1.2f
2、String s = String.valueOf(a)
3、String[] ss = s.split(".")
4、System.out.println("整数部分:"+ ss[0])
System.out.println("小数部分:"+ ss[1])
private String[] divide(double num)
//把一个浮点数强制类型转换为long型,既得到它的整数部分
long zheng = (long)num;
//浮点数减去部分,得到小数部分,小数部分乘以100后再取整得到两位小数
long xiao = Math.round((num - zheng) * 100);
return new String[]zheng + " ",String.valueOf(xiao);
追问

你在说什么吗

Java有一个小数,如何去掉小数部分?

Java有一个小数,如何去掉小数部分?

1、Math.round(float f)对小数部分四舍五入
或者强值类型转换成int类型,直接去掉小数部分!

2、

3、向上取整:Math.ceil() //只要有小数都+1
向下取整:Math.floor() //不取小数
四舍五入:Math.round() //四舍五入

参考技术A Math.round(float f)对小数部分四舍五入
或者强值类型转换成int类型,直接去掉小数部分本回答被提问者和网友采纳
参考技术B Math.round(你的数);得到的就是去掉小数部分的数哈。。并且四舍五入了的哈。。 参考技术C 楼上的两个方法都对 你可以直接转换为int 这样就去掉了 参考技术D 假设你的数a=1.001

(int) a=1;

加我为满意答案吧

以上是关于java 按比例分配后得到小数,将小数取整,但不改变总数的主要内容,如果未能解决你的问题,请参考以下文章

Java有一个小数,如何去掉小数部分?

java中如何将分数转化成小数?

excel截取小数点前的函数,例如:500.00,我要截取500

CEILING保留n位小数向上取整

excel整数时不显示小数点

Java double转int类型按四舍五入取整