【问题标题】:How can I limit the number of my decimals?如何限制小数位数?
【发布时间】:2021-06-23 08:57:17
【问题描述】:

有什么方法可以限制用户输入的小数点?我正在制作一个基本的计算器,但我希望输入为十进制,所以我将数据类型设置为浮点数。但我也想限制我的小数点不超过 6 个小数位。如果输入超过 6 位小数,我还想向用户发送一条消息,并允许它通过循环再次输入。我该怎么做?

【问题讨论】:

  • 使用BigDecimal。它具有允许您控制比例的方法。

标签: java decimal calculator


【解决方案1】:

正如 cmets 中提到的那样,BigDecimal 可以在这里提供帮助。

BigDecimal::scale()

返回此 BigDecimal 的小数位数。如果为零或正数,则刻度 是小数点右边的位数。如果 负数,数字的未缩放值乘以 10 到 规模否定的力量。例如,-3 表示 未缩放的值乘以 1000。

所以你可以这样做:

var number = BigDecimal(userInput); 
var scale = nubmer.scale(); 
if (scale > MAXIMUM_SCALE){
  // display error message and ask for new input
}

如果您只想将输入限制为不超过 5 个小数位:

var number = BigDecimal(userInput).setScale(6); 

BigDecimal::scale()BigDecimal::setScale()

【讨论】:

  • setScale(6) 也可能有帮助。
  • val 应该是什么?
  • @ezekiel,它是developer.oracle.com/java/… 局部变量类型推断。正确的语法是var
  • @ezekiel,而不是var,它可以是BigDecimal numberBigDecimal scale
  • Anton Balaniuc 我不知道,但我试过这个 var number = BigDecimal(userInput); var scale = 数字.scale(); if (scale > MAXIMUM_SCALE){ // 显示错误信息并要求新的输入 } 它会显示一个错误的数字。规模,为什么?
猜你喜欢
  • 2017-01-23
  • 2012-12-05
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多