【问题标题】:Javascript toFixed equivalent in javaJava中的Javascript toFixed等价物
【发布时间】:2012-05-17 07:52:02
【问题描述】:

我在客户端(javascript)中使用 toFixed(2)。但是在服务器端(java)我必须重新计算。我该怎么做?

【问题讨论】:

  • '字符串数据 = "10223455.3415"; BigDecimal 十进制 = 新 BigDecimal(data); System.out.println(decimal.setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString())‌​;'为我工作
  • 也许那行代码可以帮助你System.out.println(String.format(Locale.ENGLISH, "%.2f", 1.23456));

标签: java javascript


【解决方案1】:

BigDecimalsetScale() 将在服务器端为您完成此操作

import java.math.BigDecimal;


public class Main{

public static void main(String ar[]){
 float number = 123.123456F;
 BigDecimal numberBigDecimal = new BigDecimal(number);
 System.out.println(numberBigDecimal);
 numberBigDecimal  = numberBigDecimal .setScale(2, BigDecimal.ROUND_HALF_UP);
 System.out.println(numberBigDecimal);
}
}

【讨论】:

  • 1000000023.1253456F 如果我给出了这个问题
  • 我为运行良好的问题添加了评论。谢谢@Joshi
  • 似乎超出了浮点数的范围,它运行良好检查this
  • 我认为这不会给出准确的结果,例如在 javascript Number(1.345).toFixed(2) 中会给出 1.34,而在 java 中 new BigDecimal(1.345).setScale(2, BigDecimal。 ROUND_HALF_UP) 将给出 1.35
  • @Sayantan 这太荒谬了。有什么解决办法吗?
【解决方案2】:

DecimalFormatformat 方法在java 中相当于toFixed 在javascript 中。

DecimalFormat decimalFormat = new DecimalFormat("0.##");
System.out.println(decimalFormat.format(3.1000565));

【讨论】:

  • float data =1234568.236f; 是什么意思?
  • DecimalFormat decimalFormat = new DecimalFormat("0.##"); System.out.println(decimalFormat.format(data)); = 1234568.25 但在 js 中它给出 1234568.24
  • String data = "10223455.3415"; BigDecimal decimal = new BigDecimal(data); System.out.println(decimal.setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString());
  • 大十进制,setScale 是要走的路。见 Jigar Joshi 的answer
  • @FernandoTorres 请详细说明
猜你喜欢
  • 1970-01-01
  • 2019-11-03
  • 2014-12-06
  • 2014-02-27
  • 2013-08-25
  • 1970-01-01
  • 2013-10-08
  • 2014-01-08
  • 1970-01-01
相关资源
最近更新 更多