[Problem] Pilnowanie zakresu i odpowiedni typ danych.

0

Witam :)
Mam do zrobienia programik, który będzie liczył podane wyrażenia dla danego x.
user image
Moje pytanie jest takie- jak zabezpieczyć się przed wyjściem poza zakres- jak widać suma jest dla nieskończonej liczby elementów oraz jaki typ danych będzie w tym zadaniu najbardziej optymalny? Wydaje mi się, że z uwagi na dzielenie i osiągane dość wysokie liczby najlepszy będzie double, ale wolę się upewnić. A najważniejsze jest dla mnie jak nie wyjść poza zakres.
Z góry dziękuje za odpowiedź i pozdrawiam!

0
  1. Co Ty nazywasz wyjściem poza zakres?
  2. Nieskończonej sumy nie wyliczysz, musisz wybrać jakieś kryterium przerwania sumowania.
0

Zawsze wybieraj narzedzie stosownie do zadania, jakie masz wykonac.
Dla powyzszego zadania - idealne narzedzie to np program Maple, nie java

0

Chodzi mi to, aby przerwać sumowanie w momencie, gdy skończy nam się zakres- czyli gdy kolejne sumowanie spodowałoby osiągnięcie wyższej wartości (niekoniecznie wyniku- wystarczy, że którejś skladowej np. silni z k) niż maksymalna dla danego typu liczbowego- np. int.
Zadanie muszę zrobić w javie, bo z niej korzystamy na zajęciach.

0

Wykonaj ten program, popatrz na ekran i będziesz wiedział jakie jest największe dopuszczalne k.

public class Silnia
{
    public static void main(String[] args)
    {
        {
            int silnia=1;
            for(int i=2;i<30;i++)
            {
                silnia*=i;
                System.out.println("i= "+i+" silnia= "+silnia);
            }
        }
        {
            long silnia=1;
            for(int i=2;i<30;i++)
            {
                silnia*=i;
                System.out.println("i= "+i+" silnia= "+silnia);
            }
        }
    }
}
0

Dzięki za odpowiedź. a czy jest jakaś funkcja, która zwraca maksymalną wartość dla danego typu liczbowego? W pascalu to było np. high(int), a w javie nie mogę czegoś takiego znaleźć.

0

Integer.MAX_VALUE i odpowiednio dla innych

0

A jak chcesz wykorzystać Integer.MAX_VALUE do sprawdzenia czy nie przekroczyłeś zakresu?

0

Zwyczajnie- sprawdzić, czy wynik jest większy, niż maksymalna wartość minus kolejny element, który chcę dodać do wyniku. Aczkolwiek w tym zadaniu raczej z tego nie skorzystam, gdyż nie będę wyliczać każdego elementu z osobna. Po prostu myślę, że może mi się to przydać w przyszlości:).

1 użytkowników online, w tym zalogowanych: 0, gości: 1