我目前正在开展一个项目,其中包含屏幕上某些值的计算:
<section class='service-widget is-closed' id='service_id>
对于open Microsoft.FSharp.Linq.RuntimeHelpers
open System
open System.Linq.Expressions
open Accord.Math.Optimization
module Vector=
let compareScalarProcut(a:double[])(b:double[])(greaterOrEqualThen:float)=
Array.map2 (*) a b
|> Array.sum
|> fun x-> x >= greaterOrEqualThen
module Lambda =
let toExpression (``f# lambda`` : Quotations.Expr<'a>) =
``f# lambda``
|> LeafExpressionConverter.QuotationToExpression
|> unbox<Expression<'a>>
let LambdaExpression (coefficients:double[]) =
<@ Func<double[], bool>(fun i -> (Vector.compareScalarProcut(i,coefficients,0)) @>
|> Lambda.toExpression
,TextField按预期显示double calculatedValue;
double calculatedValue2;
private JTextField firstUnity;
private JTextField secondUnity;
firstUnity = new JTextField();
firstUnity.setEditable(false);
secondUnity = new JTextField();
secondUnity.setEditable(false);
add(firstUnity);
add(secondUnity);
public void calculate(){
calculatedValue = 10/2.5;
calculatedValue2 = 10/2.55;
firstUnity.setText(String.valueOf(calculatedValue));
secondUnity.setText(String.valueOf(calculatedValue2));
}
。
很遗憾,firstUnity
显示4
。
有人可以向我解释这种解释的原因是什么?
感谢您的帮助
答案 0 :(得分:5)
JTextField
太短,无法显示double
。您可以通过确保标签足够宽,或通过使用DecimalFormat
减少显示的小数位数来解决此问题:
public static final DecimalFormat DISPLAY_FORMAT = new DecimalFormat("#.####");
public void calculate(){
calculatedValue = 10/2.5;
calculatedValue2 = 10/2.55;
firstUnity.setText(FORMAT.format(calculatedValue));
secondUnity.setText(FORMAT.format(calculatedValue2));
}
您可以通过增加/减少#
构造函数参数中DecimalFormat
个字符的数量来调整显示的小数位数。
答案 1 :(得分:4)
calculatedValue2 = 3.9215686274509807的答案。 查看最后一个数字是否符合您的错误答案&#39;?
我认为您的文字区域不够广泛,无法显示整个答案。 尝试更改文本字段的大小。