我想最多舍入2位小数,但只在必要时.
输入:
10
1.7777777
9.1
Run Code Online (Sandbox Code Playgroud)
输出:
10
1.78
9.1
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做__CODE__
?
是什么区别decimal
,float
并double
在.NET?
什么时候会有人使用其中一种?
我想要的是一种将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中实现这一目标的最佳方法是什么?
我一直看到人们在C#中使用双打.我知道我读到某个地方,双打有时会失去精确度.我的问题是什么时候应该使用双倍,何时应该使用小数类型?哪种类型适合货币计算?(即超过1亿美元)
我想使用轨迹栏来改变窗体的不透明度.
这是我的代码:
decimal trans = trackBar1.Value / 5000;
this.Opacity = trans;
Run Code Online (Sandbox Code Playgroud)
当我构建应用程序时,它会出现以下错误:
无法隐式转换
decimal
为double
.
我尝试使用trans
,double
但然后控件不起作用.这段代码在过去的VB.NET项目中运行良好.
当显示当前小数的值时.ToString()
,它精确到15个小数位,并且由于我用它来表示美元和美分,我只希望输出为2位小数.
我是否使用此变体.ToString()
?
为了使用十进制数据类型,我必须使用变量初始化来执行此操作:
decimal aValue = 50.0M;
Run Code Online (Sandbox Code Playgroud)
M部分代表什么?
有时,Activerecord数据类型让我感到困惑.呃,经常.对于特定情况,我的一个永恒问题是:
我应该使用
:decimal
或:float
?
我经常遇到这个链接,ActiveRecord :: decimal vs:float?,但答案不够清楚,我无法确定:
我见过许多线程,人们建议不要使用浮点数并始终使用小数.我也看到一些人建议只使用浮动用于科学应用.
以下是一些示例案例:
-45.756688
,120.5777777
,...0.9
,1.25
,1.333
,1.4143
,...我:decimal
过去曾经使用过,但是我发现与BigDecimal
浮点数相比,处理Ruby中的对象是不必要的尴尬.例如,我也知道我可以:integer
用来代表金钱/美分,但它并不适合其他情况,例如精确度随时间变化的数量.
floating-point types ruby-on-rails decimal rails-activerecord
我试图找出SQL Server中列的十进制数据类型.我需要能够存储15.5,26.9,24.7,9.8等值
我分配decimal(18, 0)
了列数据类型,但这不允许我存储这些值.
这样做的正确方法是什么?