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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.63
gaudin
0 / 0 / 0
Регистрация: 29.01.2012
Сообщений: 7
30.01.2012, 00:07     Отбросить дробную часть числа #1
Написал программу по подсчету калорий.
Программа отлично работает есть только одно но, выдает результат 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
 Аватар для Bes-s
30 / 30 / 2
Регистрация: 05.11.2011
Сообщений: 178
30.01.2012, 00:48     Отбросить дробную часть числа #2

http://developer.android.com/referen...lang/Math.html - тут матчасть))
если по индусски, то так: (int)перед нужной переменной
агерон
 Аватар для агерон
265 / 264 / 33
Регистрация: 12.10.2009
Сообщений: 1,040
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
 Аватар для Bes-s
30 / 30 / 2
Регистрация: 05.11.2011
Сообщений: 178
30.01.2012, 10:43     Отбросить дробную часть числа #4
тут стоял вопрос "отбросить дробную часть", а не округлить. так что индусский каст к (int) как раз в тему))
KarmaMaker
 Аватар для KarmaMaker
91 / 90 / 1
Регистрация: 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
292 / 189 / 19
Регистрация: 16.01.2010
Сообщений: 526
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     Отбросить дробную часть числа
Ответ Создать тему
Опции темы

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