我正在尝试将BigDecimal值向上舍入到小数点后两位.
我正在使用
BigDecimal rounded = value.round(new MathContext(2, RoundingMode.CEILING));
logger.trace("rounded {} to {}", value, rounded);
Run Code Online (Sandbox Code Playgroud)
但它不能始终如一地做我想做的事:
rounded 0.819 to 0.82
rounded 1.092 to 1.1
rounded 1.365 to 1.4 // should be 1.37
rounded 2.730 to 2.8 // should be 2.73
rounded 0.819 to 0.82
Run Code Online (Sandbox Code Playgroud)
我不关心有效数字,我只想要两位小数.我如何使用BigDecimal执行此操作?或者是否有另一个类/库更适合这个?
我正在尝试确定在SQL中截断或删除额外小数位的最佳方法,而不进行舍入.例如:
declare @value decimal(18,2)
set @value = 123.456
Run Code Online (Sandbox Code Playgroud)
这将自动围绕@Value为123.46 ....这在大多数情况下是好的.但是,对于这个项目,我不需要那样做.是否有一种简单的方法来截断我不需要的小数?我知道我可以使用left()函数并转换回小数......还有其他方法吗?
我在这段代码的输出中得到了很多小数(华氏温度到摄氏温度转换器).
我的代码目前看起来像这样:
def main():
printC(formeln(typeHere()))
def typeHere():
global Fahrenheit
try:
Fahrenheit = int(raw_input("Hi! Enter Fahrenheit value, and get it in Celsius!\n"))
except ValueError:
print "\nYour insertion was not a digit!"
print "We've put your Fahrenheit value to 50!"
Fahrenheit = 50
return Fahrenheit
def formeln(c):
Celsius = (Fahrenheit - 32.00) * 5.00/9.00
return Celsius
def printC(answer):
answer = str(answer)
print "\nYour Celsius value is " + answer + " C.\n"
main()
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何使程序围绕小数点后两位的每个答案?
考虑下面的四个百分比,表示为float数字:
13.626332%
47.989636%
9.596008%
28.788024%
-----------
100.000000%
Run Code Online (Sandbox Code Playgroud)
我需要将这些百分比表示为整数.如果我只是使用Math.round(),我最终总共有101%.
14 + 48 + 10 + 29 = 101
Run Code Online (Sandbox Code Playgroud)
如果我使用parseInt(),我最终总共有97%.
13 + 47 + 9 + 28 = 97
Run Code Online (Sandbox Code Playgroud)
什么是一个很好的算法来表示任意数量的百分比作为整数,同时仍然保持总计100%?
编辑:在阅读了一些评论和答案后,显然有很多方法可以解决这个问题.
在我看来,为了忠实于数字,"正确"的结果是最小化整体错误的结果,由相对于实际值引入的错误舍入量来定义:
value rounded error decision
----------------------------------------------------
13.626332 14 2.7% round up (14)
47.989636 48 0.0% round up (48)
9.596008 10 4.0% don't round up (9)
28.788024 29 2.7% round up (29)
Run Code Online (Sandbox Code Playgroud)
在平局(3.33,3.33,3.33)的情况下,可以做出任意决定(例如3,4,3).
JRuby 1.6.x. 如何将浮点数舍入到jruby中的小数位数.
number = 1.1164
number.round(2)
The above shows the following error
wrong number of arguments (1 for 0)
Run Code Online (Sandbox Code Playgroud)
如何将其舍入到2位小数?
当我在2个整数之间进行除法时,我想指定小数位数,如:
select 1/3
Run Code Online (Sandbox Code Playgroud)
目前返回0.我希望它能回来0,33.
就像是:
select round(1/3, -2)
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我怎样才能达到预期的效果?
我刚刚重新阅读Python 3.0中的新功能,它指出:
round()函数舍入策略和返回类型已更改.确切的中途情况现在四舍五入到最接近的偶数结果而不是零.(例如,round(2.5)现在返回2而不是3.)
和圆形文件:
对于支持round()的内置类型,值被舍入到10的最接近的倍数到幂减去n; 如果两个倍数相等,则向均匀选择进行舍入
所以,在v2.7.3下:
In [85]: round(2.5)
Out[85]: 3.0
In [86]: round(3.5)
Out[86]: 4.0
Run Code Online (Sandbox Code Playgroud)
正如我所料.但是,现在在v3.2.3下:
In [32]: round(2.5)
Out[32]: 2
In [33]: round(3.5)
Out[33]: 4
Run Code Online (Sandbox Code Playgroud)
这似乎是违反直觉的,与我对四舍五入的理解相反(并且必然会绊倒人).英语不是我的母语,但在我读到这篇文章之前,我以为我知道舍入的含义是什么: - /我确信在引入v3的时候一定有一些关于这个的讨论,但是我无法找到一个很好的理由我的搜索.
我在这里错过了什么?
更新:@ Li-aungYip的评论"银行家的舍入"给了我正确的搜索词/搜索关键字,我发现了这个问题:为什么.NET使用银行家的舍入作为默认值?所以我会仔细阅读.
我想使用Javascript来舍入一个数字.由于这个数字是货币,我希望它像这些例子一样向上舍入(2个小数点):
如何使用Javascript实现这一目标?内置的Javascript函数将根据标准逻辑(小于和大于5)向上舍入数字.
好的 - 我几乎不好意思在这里张贴这个(如果有人投票结束我会删除),因为这似乎是一个基本问题.
这是在C++中舍入到数字的倍数的正确方法吗?
我知道还有其他与此相关的问题,但我特别感兴趣的是知道在C++中执行此操作的最佳方法是什么:
int roundUp(int numToRound, int multiple)
{
if(multiple == 0)
{
return numToRound;
}
int roundDown = ( (int) (numToRound) / multiple) * multiple;
int roundUp = roundDown + multiple;
int roundCalc = roundUp;
return (roundCalc);
}
Run Code Online (Sandbox Code Playgroud)
更新:对不起我可能没有明确意图.这里有些例子:
roundUp(7, 100)
//return 100
roundUp(117, 100)
//return 200
roundUp(477, 100)
//return 500
roundUp(1077, 100)
//return 1100
roundUp(52, 20)
//return 60
roundUp(74, 30)
//return 90
Run Code Online (Sandbox Code Playgroud)
编辑:感谢所有的回复.这是我的目的:
int roundUp(int numToRound, int multiple)
{
if(multiple == 0)
{
return numToRound;
} …Run Code Online (Sandbox Code Playgroud) rounding ×10
algorithm ×2
math ×2
python ×2
sql-server ×2
bigdecimal ×1
c++ ×1
division ×1
java ×1
javascript ×1
jruby ×1
percentage ×1
perl ×1
python-3.x ×1
ruby ×1
sql ×1
t-sql ×1