在java 1.5中截断浮点,不包括setRoundingMode
我想截断Java中的浮点值 以下是我的要求:在java 1.5中截断浮点,不包括setRoundingMode,java,format,jdk1.5,Java,Format,Jdk1.5,我想截断Java中的浮点值 以下是我的要求: 如果我有12.49688f,它应该打印为12.49,不进行四舍五入 如果双精度为12.456,则应按12.45打印,不进行舍入 在任何情况下,如果该值类似于12.0,则应仅打印为12 条件3应始终牢记在心。它应与 截断逻辑 附言:我正在使用Java1.5。所以我知道如何在Java1.6中实现这一点,即使用十进制格式并调用setroundingMode()Method。 在将数字提供给十进制格式之前,我需要知道Java 1.5的乘法、使用和除法。这与截
setroundingMode()
Method。
在将数字提供给十进制格式之前,我需要知道Java 1.5的乘法、使用和除法。这与截断圆IG相同
// Replace N with the desired number of decimals after the comma
number = Math.floor(1eN * number) / 1eN
这并不完美,因为浮点计算中存在舍入错误,所以您仍然必须为小数格式指定N个小数
一个(更昂贵,但也更合乎逻辑)的替代方法是使用一个
在将数字提供给十进制格式之前,先进行乘法、使用和除法运算。这与截断圆IG相同
// Replace N with the desired number of decimals after the comma
number = Math.floor(1eN * number) / 1eN
这并不完美,因为浮点计算中存在舍入错误,所以您仍然必须为小数格式指定N个小数
一个(更昂贵,但也更合乎逻辑)的替代方法是使用一个
将其转换为字符串,并截断句点后第二个数字后面的任何内容。 修剪“0”和“.”,如果有“.”
(经过测试,适用于我的环境)将其转换为字符串,并截断句点后第二位数字后的任何内容。 修剪“0”和“.”,如果有“.”
(经过测试,在我的环境中工作)@stefan bachert如果我输入12.2,它应该给我12.20?@stefan bachert如果我输入12.2,它应该给我12.20?
String x = Double.toString (12.456); // or Float.toString (12.49688f);
int pos = x.indexOf ('.'); //
if (pos >= 0) {
int end = Math.min(pos + 2, x.length() - 1); // truncate after 2 digits
while (x.charAt (end) == '0') end --; // trim 0
if (x.charAt (end) == '.') end --; // trim .
x = x.substring(0, end + 1); // really truncate
}