JAVA编程:输出值要求格式化为:以逗号作为每千位的间隔符,并且小数点后四舍五入为两位。例如:123.45

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA编程:输出值要求格式化为:以逗号作为每千位的间隔符,并且小数点后四舍五入为两位。例如:123.45相关的知识,希望对你有一定的参考价值。

有快速应用于所有类的方法吗?

import java.text.DecimalFormat;

public class Test
public static void main(String[] args)
double pi=3.1415927;//圆周率
//取一位整数
System.out.println(new DecimalFormat("0").format(pi));//3
//取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));//3.14
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));//03.142
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));//3
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%

long c=299792458;//光速
//显示为科学计数法,并取五位小数
System.out.println(new DecimalFormat("#.#####E0").format(c));//2.99792E8
//显示为两位整数的科学计数法,并取四位小数
System.out.println(new DecimalFormat("00.####E0").format(c));//29.9792E7
//每三位以逗号进行分隔。
System.out.println(new DecimalFormat(",###").format(c));//299,792,458
//将格式嵌入文本
System.out.println(new DecimalFormat("光速大小为每秒,###米").format(c)); //光速大小为每秒299,792,458米

参考技术A java.text.DecimalFormat format = new java.text.DecimalFormat("####,####,####,####,####.##");
double test = 12312312313123.015312312;
System.out.println(format.format(test));// 输出 12,3123,1231,3123.02

用逗号格式化数字以在 Python 中分隔千位

【中文标题】用逗号格式化数字以在 Python 中分隔千位【英文标题】:Format a number with commas to separate thousands in Python 【发布时间】:2017-08-23 11:39:11 【问题描述】:

我有一个大型数据框,其中有一列名为Lead Rev。此列是数字字段,例如(100000 或 5000 等)。我想知道如何格式化这些数字以将逗号显示为千位分隔符。该数据集有超过 200,000 行。

是不是类似于:':,'.format('Lead Rev')

这给出了这个错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-182-5fe9c827d80b> in <module>()
----> 1 ':,'.format('Lead Rev')

ValueError: Cannot specify ',' or '_' with 's'.

【问题讨论】:

当您说“数字”时,它们是 int、float 还是两者兼而有之?此外,format spec ':,' doesn't contain any type '%'/'f'/etc., so it will default to 's' and try to apply it to all types。 supposed 可以工作,但如果不行,您将不得不退回到特定于列、特定于类型的格式说明符/自定义格式化程序。报告问题时说明哪个版本的熊猫很有帮助。 【参考方案1】:

要让您的所有浮点数在 pandas 0.23 到 0.25 版本中默认显示逗号分隔符,请设置以下内容:

pd.options.display.float_format = ':,'.format

https://pandas.pydata.org/pandas-docs/version/0.23.4/options.html

在 pandas 1.0 版中,这在某些情况下会导致一些奇怪的格式。

【讨论】:

在逗号后添加 ".2f" 将只显示 2 位数字,而不是一些奇怪的浮点型数字。 pd.options.display.float_format = ':,.2f'.format【参考方案2】:

您可以使用 apply() 来获得所需的结果。这也适用于浮动

import pandas as pd

series1 = pd.Series('Value': 353254)
series2 = pd.Series('Value': 54464.43)
series3 = pd.Series('Value': 6381763761)

df = pd.DataFrame([series1, series2, series3])
print(df.head())

         Value
0  3.532540e+05
1  5.446443e+04
2  6.381764e+09

df['Value'] = df.apply(lambda x: ":,".format(x['Value']), axis=1)
print(df.head())

             Value
0        353,254.0
1        54,464.43
2  6,381,763,761.0

【讨论】:

df['Value'] = df['Value'].apply(lambda x: ":,".format(x)有何不同? 如果你只想有两位小数怎么办?您如何合并%.2f 信息? 这个答案具有误导性,因为它导致列是字符串而不是浮点数。 你也可以完全去掉 lambda。:df['Value'] = df['Value'].apply(':,'.format) 因为 str.format 接受一个参数。【参考方案3】:

df.head().style.format(":,.0f")所有列

df.head().style.format("col1": ":,.0f", "col2": ":,.0f")每列

https://pbpython.com/styling-pandas.html

【讨论】:

这个答案不会改变值。它严格用于演示。完美的。谢谢你。 - E 仅供参考,这需要 jinja2:ImportError: Missing optional dependency 'jinja2'. DataFrame.style requires jinja2. Use pip or conda to install jinja2. @Henry - 您使用的是哪个 IDE/Notebook 客户端?对于标准的 Jupyter Lab 或 Jupyter Notebook 安装和pip install pandas,这是开箱即用的。【参考方案4】:

最简单的方法是

df = df.style.format(':,')

【讨论】:

【参考方案5】:

可能是最简洁的解决方案:df[column].map(':,d'.format)

【讨论】:

【参考方案6】:

你可以使用apply或者stack方法

df.apply(lambda x: x.str.replace(',','.'))
df.stack().str.replace(',','.').unstack()

【讨论】:

【参考方案7】:

, 等分组选项仅支持数字表示类型。您需要指定数字表示类型。阅读您的options。

【讨论】:

以上是关于JAVA编程:输出值要求格式化为:以逗号作为每千位的间隔符,并且小数点后四舍五入为两位。例如:123.45的主要内容,如果未能解决你的问题,请参考以下文章

使用 ToString() 格式化十进制值以将逗号作为千位分隔符,其中小数位数未知

逗号格式的数字

如何格式化带有千位分隔符和括号中的负数的数据透视表数字?

用逗号格式化数字以在 Python 中分隔千位

如何放置千位分隔符“点”

如何将双精度值格式化为点后两位小数且分隔符为千位的字符串?