标签: number-formatting

是否有处理有效数字的Java数字格式库?

内置的DecimalFormat仅允许您指定小数点右侧的位数.

由于将数字表示为double的限制,数字格式化需要在其中包含一定程度的舍入.在一般情况下,舍入必须是多个有效数字(默认情况下是双精度),否则你的格式化双精度将最终显示像3.5999999而不是3.6的东西.

我能找到的最接近的解决方案是使用

new BigDecimal(double, new MathContext(14, RoundingMode.HALF_EVEN).stripTrailingZeros().toPlainString()
Run Code Online (Sandbox Code Playgroud)

但是,这只提供单一格式.如果我需要通常格式化它(组分隔符,小数点分隔符,限制数字位数,填充等),JDK库中没有任何内容.

是否有一个通用数字格式库,可以正确处理有效数字的舍入?

有人问了一些例子.所以,假设我想格式化为4位有效数字,然后:

0.000003599999 -> 0.0000036
4.12345 -> 4.123
1234.345 -> 1234
Run Code Online (Sandbox Code Playgroud)

我们采取的一般方法是舍入到14位数,因为根据情况,双倍只能代表大约15-17位有效数字(或者我已经读过).

java number-formatting

15
推荐指数
3
解决办法
9765
查看次数

在php中添加逗号为千位分隔符和浮点数

我有这个

$example = "1234567"
$subtotal =  number_format($example, 2, '.', '');
Run Code Online (Sandbox Code Playgroud)

$ subtotal的返回是"1234567.00" 如何修改$ subtotal的定义,使它像这样"1,234,567.00"

php comma number-formatting

15
推荐指数
1
解决办法
4万
查看次数

如何在angularjs中复数和格式化数字

我想格式化一个数字并用angular来复数.

例如(给定一些比特币):

         0 => "John has no bitcoins"
         1 => "John has 1 bitcoin"
         2 => "John has 2 bitcoins"
12345.6789 => "John has 12,345.67 bitcoins"
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

John has
<ng-pluralize count="bitcoin_amount | round:2" 
              when="{'0': 'no bitcoins', 
                     '1': '1 bitcoin', 
                     'other': '{} bitcoins'}">
</ng-pluralize>
Run Code Online (Sandbox Code Playgroud)

但这种失败草草收场,因为对数字等于或大于1000更大,它们是作为传递1,000count属性,所以只有几千所示.例如:

1001 => 1
1000 => 1
2000 => 2
etc...
Run Code Online (Sandbox Code Playgroud)

尝试粘贴1,000在框中number of people这个演示的例子.


如何格式化数字并将其复数为有角度?

javascript pluralize number-formatting angularjs

15
推荐指数
2
解决办法
2万
查看次数

如何用上标中的幂来格式化科学记数法中的数字

我需要写出如下值:

9.6 x 10²
9.6 x 10¹²
Run Code Online (Sandbox Code Playgroud)

我需要知道是否有一种方法可以在字符串中格式化数字.

c# number-formatting visual-studio winforms

15
推荐指数
3
解决办法
1985
查看次数

用左边的0填充字符串的最简单方法是什么?

填充字符串的最简单方法是将左侧的0填充为0

  • "110"="00000110"

  • "11110000"="11110000"

我曾尝试使用format!宏,但它只用空间填充到右边:

format!("{:08}", string);
Run Code Online (Sandbox Code Playgroud)

formatting string-formatting number-formatting rust

15
推荐指数
2
解决办法
3725
查看次数

如何格式化类似Stack Overflow信誉格式的数字

我想将数字转换为字符串表示形式,其格式类似于Stack Overflow信誉显示.

例如

  • 999 =='999'
  • 1000 =='1,000'
  • 9999 =='9,999'
  • 10000 =='10k'
  • 10100 == '10 .1k'

javascript number-formatting

14
推荐指数
2
解决办法
9093
查看次数

如何在ruby中将单个数字编号设为两位数?

Time.new.month返回10月之前任何月份的单个数字表示(例如6月6),但我想要一个2位数格式(即6我想要的而不是06).

我写了以下解决方案,我要求看一些其他/更好的解决方案.

s = 6.to_s; s[1]=s[0]; s[0] = '0'; s #=> '06'
Run Code Online (Sandbox Code Playgroud)

ruby number-formatting

14
推荐指数
4
解决办法
2万
查看次数

如何格式化给定语言环境的双精度值和小数位数?

我如何使用NumberFormat格式化double给定的值Locale(默认语言环境就足够了)和给定的小数位数?

例如,我有以下值:

double d1 = 123456.78;
double d2 = 567890;
Run Code Online (Sandbox Code Playgroud)

我想以下列方式打印它们,例如使用美国语言环境和2个小数位:

123,456.78
567,890.00
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我实际上并不关心舍入模式,因为这些双值是从BigDecimal给定比例的a 获得的,因此它们的小数位数总是小于或等于我想要打印的小数位数.

编辑:

为了使事情更清楚,问题是我想以依赖于语言环境的方式显示钱,但是具有固定数量的小数位.上面的示例显示了如果系统区域设置是如何格式化值en_US.现在假设,系统区域设置是cs_CZ(捷克语),因此应以这种方式格式化相同的数字:

123 456,78
567 890,00
Run Code Online (Sandbox Code Playgroud)

现在,如何设置NumberFormat以始终显示2个小数位,但是根据当前区域设置显示千位分隔符和小数点?

java number-formatting

14
推荐指数
2
解决办法
3万
查看次数

强制数字输入为零

我正在写一个报警网络应用程序.我有两个数字输入,一个用于小时,一个用于分钟.因此,当我使用键盘箭头时,它们从0到23/59.是否有HTML本地方式使它们从00(01,02等)到23/59而不是?

我只担心UI方面,因为我的JS管理缺失的0无论如何.

编辑 - 根据要求:

是)我有的 :

当前

我想要的是 :

目的

而不是从0,1,2到59,我想在数字小于10(00,01,02到59)时自动获得前导0.

html html5 number-formatting

14
推荐指数
2
解决办法
2万
查看次数

如何使用逗号和指定的精度数字格式化数字

问题出在Python 2.6上,这就是我们在生产中所拥有的.

我有这个要求用逗号格式化数字(如1234567.0987或1234567.0),以及小数点后指定的位数.因此,如果精度为3,则1234567.0987可能看起来像1,234,567.099.

我尝试使用Locale,正如许多问题的答案所示,问题是小数点后产生两位数,这对我的要求是不可接受的.

我尝试在其他地方搜索,但没有找到任何解决方案,最后我自己创建了一个方法:

def format_float(value, precision = 4):
    formatString = "%0." + str(precision) + "f"    
    str_val =  formatString % value
    first, second = str_val.split('.')
    first = int(first)
    group = []
    while True:
        result, mod = first / 1000, first % 1000
        group.append(str(mod))
        if result == 0:
            break
        first = result
    group.reverse() 
    return ','.join(group) + '.' + second
Run Code Online (Sandbox Code Playgroud)

我试图运行一些测试来测试该方法,它工作正常:

# default 4 digits precision
assert format_float(1234567890.0876543) == '1,234,567,890.0877'
assert format_float(1.2) == '1.2000'
assert format_float(1234) == '1,234.0000'
assert format_float(0) == …
Run Code Online (Sandbox Code Playgroud)

python string-formatting number-formatting

13
推荐指数
2
解决办法
2万
查看次数