Большой Воронежский Форум
» Программирование>Округлить float (java servlet pages)
Katrin_II 17:22 21.09.2006
Есть формула:

float c=a+b;

float d=Float.parseFloat(oRS.get(String("10"))*c;

В как можно округлить d, чтобы после запятой осталось 2 цифры?

Нужно именно в формуле, а не в запросе. В таком контексте:

float d=round((Float.parseFloat(oRS.getString("10"))*c), 2);

Не получается нифига... Даже так не выходит:
float d=floor(Float.parseFloat(oRS.get(String("10"))*c);

Возвращает ошибку с сообщением:
symbol : method floor (float)

Помогите, плиииз! [Ответ]
Katrin_II 08:29 22.09.2006
ну памагите! хнык... [Ответ]
builder 08:35 22.09.2006
Katrin_II, в ентом зловещем языке ничего не понимаю. Но когда нужно было сделать подобное на программируемом калькуляторе я поступал так: умножал на 100, от полученного значения брал int и обратно делил на 100.
Ес-сно все это применялось числам больше единицы ))) [Ответ]
Katrin_II 08:41 22.09.2006
builder, хм... вариант... счас попробую. [Ответ]
Zhenka 08:57 22.09.2006
Katrin_II, я ещё могу добавить, что можно после умножения на сто и взятия int, проверить остаток на больше-меньше 0.5. Если меньше, то так и берем инт и делим опять на сто, если больше или равно, то прибавляем к инту единичку и потом делим на сто. Короче, правила округления учитываем таким образом. [Ответ]
Katrin_II 09:13 22.09.2006
блин... float в integer не получается перевести...
пишу:
int d=Integer.parseInt(Float.parseFloat(oRS.get(String ("10"))*c);
А оно мне опять ошибку - symbol : method int (float) [Ответ]
Katrin_II 09:31 22.09.2006
Получилось округлённое до целого число чисто по случайности. Решила метод Math добавить через точку:
Math.round(Float.parseFloat(oRS.get(String ("10"))*c)

всё. проблема решена. Но всем спасибо. [Ответ]
netwind 10:34 22.09.2006
угу, язык зловещий и sprintf там нету.
так что наиболее кошерно будет как-то так :

import java.text.*;

float fi = 1234.56789F;
DecimalFormat mydf = new DecimalFormat( "0000000.00" );
System.out.println( mydf.format(fi) ); [Ответ]
VYX 18:59 02.10.2006

Сообщение от netwind:
угу, язык зловещий и sprintf там нету.
так что наиболее кошерно будет как-то так :
import java.text.*;
float fi = 1234.56789F;
DecimalFormat mydf = new DecimalFormat( "0000000.00" );
System.out.println( mydf.format(fi) );

sprintf там есть, начиная с версии 5 (1.5):
String.format(Locale, String, ...)
String.format(String, ...)
так же есть и printf
System.out.printf("%.2f", 123.43556F);
форматы такие же как в C/C++, плюс некоторые приятные расширения.
Скажем для чисел можно указать использовать разделитель тысяч.
По-умолчанию (т.е. если локаль не указывать) будет использоваться
текущая. [Ответ]
Вверх