2015-05-15 4 views
0

Это может показаться простым вопросом, но, оказывается, все не так просто (или я не могу найти информацию о том, как это сделать).Преобразование целочисленного привязки к двойному привязке

Я просто хочу преобразовать IntegerBinding у меня, а именно Bindings.size(families); в DoubleBinding, так что если я сделаю что-то вроде этого Bindings.divide(Bindings.size(families),Bindings.size(familiesAll)), я не получаю результат целочисленного разделения. Возможно, есть другие пути для достижения того, чего я хочу, но преобразование Bindings - это то, что так важно, что это должно быть возможно.

ответ

1

Несколько вариантов:

Bindings.createDoubleBinding(() -> 
    1.0 * families.size()/familiesAll.size, 
    Bindings.size(families), Bindings.size(familiesAll)); 

или:

Bindings.divide(Bindings.size(families).add(0.0), Bindings.size(familiesAll)); 

или:

Bindings.size(families).add(0.0).divide(Bindings.size(familiesAll)); 

или:

DoubleProperty familiesSize = new SimpleDoubleProperty(); 
familiesSize.bind(Bindings.size(families)); 
Bindings.divide(familiesSize, Bindings.size(familiesAll)); 
+0

Спасибо за варианты! Я тоже думал о .add (0.0), но это кажется таким ... workaround-y? ^^ – wlfbck

+0

Да; это немного. Проблема в том, что 'IntegerBinding.getValue()' возвращает 'Integer', поэтому вы можете зацикливаться на целочисленной арифметике. Я добавил еще один, возможно, менее хакерский вариант. –

+0

Последний был на самом деле тем, что я искал. Так просто, я не мог понять это. Благодаря! – wlfbck

Смежные вопросы