Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.63
gaudin
0 / 0 / 0
Регистрация: 29.01.2012
Сообщений: 7
#1

Отбросить дробную часть числа - Android

30.01.2012, 00:07. Просмотров 6153. Ответов 6
Метки нет (Все метки)

Написал программу по подсчету калорий.
Программа отлично работает есть только одно но, выдает результат 3232,036. Как можно отбросить дробную часть полностью, пишу на eclipce.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        float num3 = 0;
        double num4 = 0;
        float result = 0;
 
        num3 = Float.parseFloat(etNum3.getText().toString());
        num4 = Float.parseFloat(etNum4.getText().toString());
         
        switch (v.getId()) {
        case R.id.button1:
          result = (float) ((num1 * 1.8 + num2 * 9.6 + num3 * 4.7 + 655) * num4); 
          break;
        default:
          break;
        }
 
        tvResult.setText(" " + result);
      }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bes-s
30 / 30 / 2
Регистрация: 05.11.2011
Сообщений: 178
30.01.2012, 00:48     Отбросить дробную часть числа #2

http://developer.android.com/referen...lang/Math.html - тут матчасть))
если по индусски, то так: (int)перед нужной переменной
агерон
268 / 267 / 33
Регистрация: 12.10.2009
Сообщений: 1,046
30.01.2012, 03:19     Отбросить дробную часть числа #3
Bes-s, ничего смешного в этом нет...
1)зачастую библиотечные функции округления работают медленно
2) обычный каст к int грубейшая ошибка т. к. ((int)1.1)=1 и ((int)1.6)=1, хотя по правилам математики при округлении 1.6 получается 2, а уж про буxгалтерское округление вообще молчу там мрак покрытый тайной

gaudin, конечно для тебя подошла бы библиотечная функция, но на тебе на вскидку простое преобразование
C#
1
2
float z = 1.6F;
int i = z < 0 ? (int)(z - 0.5) : (int)(z + 0.5);
в принципе C# и JAVA сходны разберешься раз поймешь идею
Bes-s
30 / 30 / 2
Регистрация: 05.11.2011
Сообщений: 178
30.01.2012, 10:43     Отбросить дробную часть числа #4
тут стоял вопрос "отбросить дробную часть", а не округлить. так что индусский каст к (int) как раз в тему))
KarmaMaker
91 / 90 / 2
Регистрация: 09.12.2011
Сообщений: 233
30.01.2012, 17:25     Отбросить дробную часть числа #5
Вот пример:

Java
1
2
3
4
5
6
7
8
9
10
11
12
package example;
 
import java.lang.Math;
 
public class Main {
    public static void main(String[] args) {
        // Если просто отбросить
        System.out.println( "Math.floor(): " + "1.2 => " + Math.floor(1.2) + ", 1.7 => " + Math.floor(1.7) );
        // Если таки надо округлить тогда вот
        System.out.println( "Math.round(): " + "1.2 => " + Math.round(1.2) + ", 1.7 => " + Math.round(1.7) );
    }
}
По поводу (int) не слушай, - это ни так шутят.
По поводу производительности: в данной задаче над этим в принципе не стоит запариваться, особенно если оптимизация ( От силы процента на два ) достигается за счет читабельности.
gaudin
0 / 0 / 0
Регистрация: 29.01.2012
Сообщений: 7
03.02.2012, 17:20  [ТС]     Отбросить дробную часть числа #6
Bes-s спасибо, исправил на int - работает так как задумано.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 int num2 = 0;
        int num3 = 0;
        double num4 = 0;
        int result = 0;
                       
        num1 = (int) Float.parseFloat(etNum1.getText().toString());
        num2 = (int) Float.parseFloat(etNum2.getText().toString());
        num3 = (int) Float.parseFloat(etNum3.getText().toString());
        num4 = Float.parseFloat(etNum4.getText().toString());
 
            
        switch (v.getId()) {
        case R.id.button1:
          result = (int) ((num1 * 1.8 + num2 * 9.6 + num3 * 4.7 + 655) * num4); 
          break;
        default:
          break;
        }
 
        tvResult.setText(" " + result);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 22:25     Отбросить дробную часть числа
Еще ссылки по теме:

Android Верхняя часть лаяута уходит за пределы экрана
Android Прочитать часть файла
Обработка нажатия на часть элемента списка Android
Android Скрыть часть web view за экран
Не отображается часть виджета Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Vladimirys
296 / 193 / 21
Регистрация: 16.01.2010
Сообщений: 547
07.02.2012, 22:25     Отбросить дробную часть числа #7
Так а зачем, было переменные объявлять, не int, и использовать Float .. Не понятно..
Вы такими действиями, вообще лишили смысла, пользоваться Float. Ибо точка, будет везде "отброшена"..
На мой взгляд лучше добавить переменную, что то вроде resultint.. Вот так:
(int) до этого везде убрать.
........
Java
1
result =  ((num1 * 1.8 + num2 * 9.6 + num3 * 4.7 + 655) * num4);
Тут, мы посчитали все с дробными, и получили результат, и только его округлим (приведем к целому), будет ближе к реальности.

Java
1
resultint = (int) result;
.....
Java
1
 tvResult.setText(" " + resultint);
Yandex
Объявления
07.02.2012, 22:25     Отбросить дробную часть числа
Ответ Создать тему
Опции темы

Текущее время: 05:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru