проблема с целыми числами - PullRequest
1 голос
/ 01 июля 2010

Кто-нибудь может взглянуть на этот код и сказать мне, почему происходит исключение?

public static void main(String[] args)
{
    int total =100;
    int discount_Ammount = 20 ;
       int newAccount=Integer.parseInt( String.valueOf(Math.floor(total - discount_Ammount)).trim());
}

Метод floor возвращает двойное значение, затем я выполняю приведение к целому числу, поэтому я преобразовываю его в строку, а затем в целое число ... пожалуйста, кто-нибудь может помочь?

Ответы [ 3 ]

14 голосов
/ 01 июля 2010

Вы ничего не "кастуете". trim() удаляет только пробелы, которые никогда не будут присутствовать в результате String.valueOf(double).

Используйте приведение:

int newAccount = (int) Math.floor(total - discount_Ammount);

Java - это строго типизированный язык программирования, а не язык сценариев. Неявные преобразования между строками и другими типами не поддерживаются.

Или вообще избавьтесь от операции floor(), поскольку вы уже работаете с количеством int, а floor() не имеет смысла:

int newAccount = total - discount_Ammount;

Если вы работаете с деньгами, используйте класс BigDecimal, чтобы вы могли использовать правила округления, требуемые вашей бухгалтерской системой. Вы не сможете управлять этим при использовании double.

8 голосов
/ 01 июля 2010

Вы пробовали это?

int newAccount = (int) Math.floor(total - discount_Ammount);

Или даже это!

int newAccount = total - discount_Ammount;
3 голосов
/ 01 июля 2010

Нет необходимости делать Integer.parseInt (String.valueOf (

) Чтобы привести к int, просто сделайте (int) (бла)

So int newAccount=(int)(Math.floor(total - discount_Ammount));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...