当前位置: 首页 > 面试题库 >

强制BigDecimals使用科学计数法

令狐昌胤
2023-03-14
问题内容

我有这种方法:

    public void Example(BigDecimal value, int scale){
    BigDecimal x = new BigDecimal("0.00001");
    System.out.println("result: " + (value.multiply(x)).setScale(scale, RoudingMode.HALF_UP).toString());

例如,如果value = 1且scale =
2,则输出为“结果:0.00”。我以为会是1.00E-5。因此,我的疑问是:如果BigDecimal的大小大于某个值(在我的示例中为2),我该如何强制将BigDecimal格式化为科学计数形式?


问题答案:

您可以将DecimalFormat搭配使用setMinimumFractionDigits(int scale)

private static String format(BigDecimal x, int scale) {
  NumberFormat formatter = new DecimalFormat("0.0E0");
  formatter.setRoundingMode(RoundingMode.HALF_UP);
  formatter.setMinimumFractionDigits(scale);
  return formatter.format(x);
}
...
System.out.println(format(new BigDecimal("0.00001"), 2)); // 1.00E-5
System.out.println(format(new BigDecimal("0.00001"), 3)); // 1.000E-5


 类似资料:
  • 问题内容: 如何抑制dataframe.describe()的科学计数法输出: 我的数据是float64类型: 问题答案: 对于单列: 对于整个DataFrame(如@databyte所建议) 对于整个DataFrame(由@Jayen建议): 当函数描述返回一个数据帧时,以上函数所做的是,它只是将每一行格式化为常规格式。我写这个答案的原因是,我心里有一个想法,那就是计数95等于95.00000e

  • 问题内容: 有一个类似的问题,所以建议使用NumberFormat,这是我所做的。 我正在使用NumberFormat的parse()方法。 我得到的结果是 1.93 我真的没想到这会起作用,因为1.930000000000E + 02是一个看起来非常不寻常的数字,我是否必须先进行一些字符串解析才能删除零?还是有一种快速而优雅的方法? 问题答案: 当对科学计数形式的表达式使用DecimalForm

  • 问题内容: 这是我的代码: 我的商显示为 有什么方法可以压制科学记数法并使其显示为 ?我将使用结果作为字符串。 问题答案: 但是你需要自己管理精度。例如,

  • 问题内容: 我在熊猫中有一个DataFrame,其中一些数字用科学计数法(或指数计数法)表示,如下所示: 科学的表示法使应该进行轻松的比较成为不必要的困难。我认为正是21900的价值将其推向了其他水平。我的意思是1.0被编码。一! 这不起作用: 而且也没有实现抑制,而且我已经绝望了,只能为所有其他float值打开它,而无法关闭它。 问题答案: 您的数据可能是dtype。这是数据的直接复制/粘贴。将

  • 问题内容: 所以这很好用: 但是当处理更大的数字时,它不会打印: 有办法强制吗?也许使用numpy之类的东西。 问题答案: print ‘{0:.10f}’.format(1.0e-9) 文档中的字符串格式。

  • Python 在科学计算上的应用非常广泛,包括数学、统计学、图形学……等等, 也是科学计算领域的首选编程语言之一。 这一部分的文章主要是介绍 Python 在科学计算领域常用的库,以及科学计算在日常中可能的实际用例。 常用库介绍 IPython 和 Jupyter Notebook NumPy NumPy 是 Python 科学计算生态系统的基础,提供了多维数组操作、线性代数运算、傅立叶变换等 多