decimalFormat.format()错误

decimalFormat声明如下所示:

private var decimalFormat: DecimalFormat? = null decimalFormat = DecimalFormat("#.##########") 

要传递给format()方法的值是:

 private var valueOne= java.lang.Double.NaN private var valueTwo: Double = 0.toDouble() 

我试图做一个计算器的应用程序,当我将valueOne传递给format()方法时,我得到的错误是在运算符按钮中:

  binding!!.buttonAdd.setOnClickListener { computeCalculation() CURRENT_ACTION = ADDITION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "+") binding!!.editText.setText(null) } binding!!.buttonSubtract.setOnClickListener { computeCalculation() CURRENT_ACTION = SUBTRACTION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "-") binding!!.editText.setText(null) } binding!!.buttonMultiply.setOnClickListener { computeCalculation() CURRENT_ACTION = MULTIPLICATION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "*") binding!!.editText.setText(null) } binding!!.buttonDivide.setOnClickListener { computeCalculation() CURRENT_ACTION = DIVISION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "/") binding!!.editText.setText(null) } binding!!.buttonEqual.setOnClickListener { computeCalculation() binding!!.infoTextView.text = binding!!.infoTextView.text.toString() + decimalFormat.format(valueTwo) + " = " + decimalFormat.format(valueOne) valueOne = java.lang.Double.NaN CURRENT_ACTION = '0' } 

我得到的错误是:

 None of the following functions can be called with the arguments supplied: public final fun format(obj: Any!): String! defined in java.text.DecimalFormat public final fun format(number: Double): String! defined in java.text.DecimalFormat public final fun format(number: Long): String! defined in java.text.DecimalFormat 

onCreate()方法的完整代码如下所示:

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main) decimalFormat = DecimalFormat("#.##########") binding?.buttonDot?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + ".") } binding?.buttonZero?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "0") } binding?.buttonOne?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "1") } binding?.buttonTwo?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "2") } binding?.buttonThree?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "3") } binding?.buttonFour?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "4") } binding?.buttonFive?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "5") } binding?.buttonSix?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "6") } binding?.buttonSeven?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "7") } binding?.buttonEight?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "8") } binding?.buttonNine?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "9") } binding!!.buttonAdd.setOnClickListener { computeCalculation() CURRENT_ACTION = ADDITION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "+") binding!!.editText.setText(null) } binding!!.buttonSubtract.setOnClickListener { computeCalculation() CURRENT_ACTION = SUBTRACTION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "-") binding!!.editText.setText(null) } binding!!.buttonMultiply.setOnClickListener { computeCalculation() CURRENT_ACTION = MULTIPLICATION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "*") binding!!.editText.setText(null) } binding!!.buttonDivide.setOnClickListener { computeCalculation() CURRENT_ACTION = DIVISION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "/") binding!!.editText.setText(null) } binding!!.buttonEqual.setOnClickListener { computeCalculation() binding!!.infoTextView.text = binding!!.infoTextView.text.toString() + decimalFormat.format(valueTwo) + " = " + decimalFormat.format(valueOne) valueOne = java.lang.Double.NaN CURRENT_ACTION = '0' } binding!!.buttonClear.setOnClickListener { if (binding!!.editText.text.length > 0) { val currentText = binding!!.editText.text binding!!.editText.setText(currentText.subSequence(0, currentText.length - 1)) } else { valueOne = java.lang.Double.NaN valueTwo = java.lang.Double.NaN binding!!.editText.setText("") binding!!.infoTextView.text = "" } } } 

请帮我解决这个错误。

请参阅DecimalFormat doc这里DecimalFormat文档

你对这个类的使用是错误的,错误信息是清楚的。 方法格式(obj:Any!)格式(数字:双)格式(数字:长)未定义。

你应该使用格式(double数字,StringBuffer结果,FieldPosition fieldPosition)