我有一个类文件Nepokretnost。java中的构造函数如下所示:
public Nepokretnost(String tipNepokretnosti, String zona, String pravo,
double povrsina, int amortizacija, double osnovica, double kredit, double porez) {
this.tipNepokretnosti = tipNepokretnosti;
this.zona = zona;
this.pravo = pravo;
this.povrsina = povrsina;
this.amortizacija = amortizacija;
this.osnovica = osnovica;
this.kredit = kredit;
this.porez = porez;
}
此外,我还为每个类字段提供了带有列的TableView。我的问题是双字段“povrsina”。我想从TextField设置它。
我将名为txtPovrsina的TextField的内容发送给双变量:
double dPovrsina;
dPovrsina = Double.parseDouble(txtPovrsina.getText());
然后将所有字段放入TableView:
ObservableList<Nepokretnost> data = tblTabela.getItems();
data.add(new Nepokretnost(cboNepokretnost.getValue().toString(),cboZona.getValue().toString(),
txtPravo,dPovrsina,40,450000.25,2500.00,2500.00));
一切都很好,但我想要一些我不知道如何设置的应用程序行为。现在,当我在TextField中输入int-like 25时,在TableView列中得到了25.0。我希望所有列单元格都有精确的2位小数。
我尝试了:
DecimalFormat df=new DecimalFormat("#.00");
ObservableList<Nepokretnost> data = tblTabela.getItems();
data.add(new Nepokretnost(cboNepokretnost.getValue().toString(),cboZona.getValue().toString(),
txtPravo,df.format(dPovrsina),40,450000.25,2500.00,2500.00));
但我得到错误“不兼容的类型:字符串不能转换为double”
我仍然是java的新手,但我猜格式是在生成字符串,我想输入保持双精度,只有两个小数位。像本专栏一样,我对其他双字段也有同样的问题。
有人能给我一些方向吗?
如果您在只读包装器上发现值转换错误,请使用该值作为对象。
TableView<Nepokretnost> table = new TableView<>();
TableColumn<Nepokretnost, Number> povrsinaCol = new TableColumn<>("Povrsina");
povrsinaCol.setCellValueFactory(cellData ->
new ReadOnlyDoubleWrapper(cellData.getValue().getPovrsina().asObject()));
povrsinaCol.setCellFactory(tc -> new TableCell<Nepokretnost, Number>() {
@Override
protected void updateItem(Number value, boolean empty) {
super.updateItem(value, empty) ;
if (empty) {
setText(null);
} else {
setText(String.format("%0.2f", value.doubleValue()));
}
}
});
您希望更改数据在表中的显示方式,而不是更改数据本身。为此,需要在表列上设置单元格工厂。类似于
TableView<Nepokretnost> table = new TableView<>();
TableColumn<Nepokretnost, Number> povrsinaCol = new TableColumn<>("Povrsina");
povrsinaCol.setCellValueFactory(cellData ->
new ReadOnlyDoubleWrapper(cellData.getValue().getPovrsina()));
povrsinaCol.setCellFactory(tc -> new TableCell<Nepokretnost, Number>() {
@Override
protected void updateItem(Number value, boolean empty) {
super.updateItem(value, empty) ;
if (empty) {
setText(null);
} else {
setText(String.format("%0.2f", value.doubleValue()));
}
}
});
问题内容: 我有1个类文件Nepokretnost.java,其中的构造函数如下所示: 此外,对于每个类字段,我都有带有列的TableView。我的问题是双字段“ povrsina”。我想从TextField设置它。 我将名为txtPovrsina的TextField的内容发送给double变量: 然后将所有字段放在TableView中: 一切运行良好,但是我想要一些应用程序的行为,但我不知道如何
问题内容: 我正在尝试将双精度数格式化为精确到小数点后2位(如果有分数),然后使用DecimalFormat将其截断 因此,我想取得下一个结果: 变体#1 变体#2 有什么想法可以选择我的情况吗? 问题答案: 我达到的唯一解决方案是使用 if语句在这里提到 测试中 如果有人知道更优雅的方式,请分享!
我的工作代码如下: 它产生以下输出: 但是我的情节有两个问题我似乎无法解决: 即使我用pd.options.display.float_format = '{:.2f}格式裁剪文本显示,该图仍然显示14位小数。
我有一个,我希望将用户的输入限制为纯数字或小数最多2位的数字。 基本上,我要求的是一个价格输入。 我想避免做正则表达式。有办法做到吗?
如何将结果四舍五入到小数点后2位并显示在结果标签上?我找到了一些陈述,但我对Swift是新手,实际上很难为我的项目重建样本。
我在C#中尝试了这一点,结果是正确的。