我想最多舍入2位小数,但只在必要时.
输入:
10
1.7777777
9.1
Run Code Online (Sandbox Code Playgroud)
输出:
10
1.78
9.1
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做__CODE__
?
我希望a
四舍五入到13.95.
>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999
Run Code Online (Sandbox Code Playgroud)
该round
功能不像我预期的那样工作.
我想要的是一种将double转换为使用half-up方法进行舍入的字符串的方法 - 即如果要舍入的小数为5,则它总是向上舍入到前一个数字.这是在大多数情况下舍入大多数人所期望的标准方法.
我也希望只显示有效数字 - 即不应该有任何尾随零.
我知道这样做的一种方法是使用该String.format
方法:
String.format("%.5g%n", 0.912385);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91239
Run Code Online (Sandbox Code Playgroud)
这很好,但它总是显示5位小数的数字,即使它们不重要:
String.format("%.5g%n", 0.912300);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91230
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用DecimalFormatter
:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
Run Code Online (Sandbox Code Playgroud)
收益:
0.91238
Run Code Online (Sandbox Code Playgroud)
但是你可以看到这使用了半均匀舍入.也就是说,如果前一个数字是偶数,它将向下舍入.我想要的是这个:
0.912385 -> 0.91239
0.912300 -> 0.9123
Run Code Online (Sandbox Code Playgroud)
在Java中实现这一目标的最佳方法是什么?
当显示当前小数的值时.ToString()
,它精确到15个小数位,并且由于我用它来表示美元和美分,我只希望输出为2位小数.
我是否使用此变体.ToString()
?
在以下程序中,您可以看到每个值略小于.5
向下舍入,除了0.5
.
for (int i = 10; i >= 0; i--) {
long l = Double.doubleToLongBits(i + 0.5);
double x;
do {
x = Double.longBitsToDouble(l);
System.out.println(x + " rounded is " + Math.round(x));
l--;
} while (Math.round(x) > i);
}
Run Code Online (Sandbox Code Playgroud)
版画
10.5 rounded is 11
10.499999999999998 rounded is 10
9.5 rounded is 10
9.499999999999998 rounded is 9
8.5 rounded is 9
8.499999999999998 rounded is 8
7.5 rounded is 8
7.499999999999999 rounded is 7
6.5 rounded is 7 …
Run Code Online (Sandbox Code Playgroud) 我有这行代码将我的数字四舍五入到小数点后两位.但是我得到这样的数字:10.8,2.4等.这些不是我的两位小数的想法,所以我如何改进以下内容?
Math.round(price*Math.pow(10,2))/Math.pow(10,2);
Run Code Online (Sandbox Code Playgroud)
我想要10.80,2.40等数字.使用jQuery对我很好.
将PHP字符串舍入到2位小数的正确方法是什么?
$number = "520"; // It's a string from a database
$formatted_number = round_to_2dp($number);
echo $formatted_number;
Run Code Online (Sandbox Code Playgroud)
输出应该是520.00
;
round_to_2dp()
功能定义应该如何?
这个问题让我很难过.如何在Python中对数字进行综合?
我尝试了一些(数字),但它将数字向下舍入.例:
round(2.3) = 2.0 and not 3, what I would like
Run Code Online (Sandbox Code Playgroud)
我尝试了int(数字+ .5),但它再次将数字向下舍入!例:
int(2.3 + .5) = 2
Run Code Online (Sandbox Code Playgroud)
然后我尝试了一下(数字+ .5)但它在边缘情况下不起作用.例:
WAIT! THIS WORKED!
Run Code Online (Sandbox Code Playgroud)
请指教.
在C#中,结果Math.Round(2.5)
为2.
应该是3,不是吗?为什么它是2而不是C#?
rounding ×10
decimal ×3
java ×3
.net ×2
double ×2
javascript ×2
python ×2
c# ×1
digits ×1
formatting ×1
integer ×1
numbers ×1
php ×1
precision ×1
python-2.x ×1