BigInteger und Int

Status
Nicht offen für weitere Antworten.

blacks9n

Mitglied
hallo...

gibt es irgendeinen methode o.ä. um biginteger mit in zu verrechnen dh multiplizieren, addieren etc. ?

oder muss ich den datentyp immer umwandeln
 
ja die kenn ich auch.. aber hätte ja sein können das jemand kleines prog geschriebn oä womit man die datentypen ohne nerviges umwandeln verrechnen kann 😉
 
man kann sich ja auch einfach ne hilferklasse bauen. so ala:
Code:
public class Big {

	private Big(){
	}

	public static BigInteger Int(int val){
		//return new BigInteger(Integer.toString(val));
		byte[] b = new byte[4];
		for(int i = 0; i < b.length; ++i)
			b[b.length - 1 - i] = (byte)(val >> i * 4);
		return new BigInteger(b);
	}

 	... 
}
Code:
big = big.multiply(Big.Int(5));
sollte weniger nervig sein dann. falls du das überhaupt meinst.

[edit]hilfer ^^
 
wenn schon, dann eine Hilfsmethode

big = Big.multiply(big, 5);

die netterweise gleich noch auf null prüft usw 😉
 
Also erstens predigen wir immer, dass Methodennamen ausnahmslos mit kleinem Buchstaben anfangen... Und zweitens finde ich's weder sinnvoll noch lesbarer, ...
Code:
big = big.multiply(BigInteger.valueOf(5));
... durch ...
Code:
big = big.multiply(Big.toInt(5));
abkürzen zu wollen. Was gewinnt man dadurch? Man muss eine Klasse mehr warten, testen, verteilen und dokumentieren. Ich bin wirklich Fan davon, Funktionalität zu kapseln. Nicht-Funktionalität braucht man aber nicht zu konzentrieren.

SlaterB hat gesagt.:
wenn schon, dann eine Hilfsmethode

big = Big.multiply(big, 5);

die netterweise gleich noch auf null prüft usw 😉
Das ist meines Erachtens ebenfalls ungünstig. Wenn in der nächsten API-Version eine weitere Methode in BigInteger hinzukommen sollte, muss man die Klasse auch noch erweitern...

Just my $0.02

Ebenius
 
stimmt BigInteger.valueOf hab ich übersehen
find das Int kann man schon mal groß schreiben. lieber Big.Int(5) als Big.integer(5), aber hat sich ja eh erledigt.

@rest: und gibt nicht nur multiply, mir wär das zu viel aufwand
 
najo also bigintger in int umwandeln is klar aber kann ich das auch iwie umgekehrt sprich int zu nem biginteger?
 
Anonymous hat gesagt.:
najo also bigintger in int umwandeln is klar aber kann ich das auch iwie umgekehrt sprich int zu nem biginteger?
:shock: Was wird denn wohl BigInteger.valueOf(int) machen? Oder meinst Du was anderes und ich versteh's nicht?
 
Ihr wisst hoffentlich, das BigInteger nicht "final" ist. So kann man simpelst seine eigene BigInteger-Klasse basteln, die diese Methode einbindet.
Code:
public class BigInteger extends java.math.BigInteger
{
    // sämtliche Klassen-Konstruktoren überlagern

    // Ich verwende hier mal long, weil das alles andere abdeckt
    public BigInteger multiply(long value)
    {
        return new BigInteger(multiply(valueOf(value)).toByteArray());
    }
}
Das lässt sich natürlich auch auf andere Methoden anwenden.

mfg Spacerat
 
Spacerat hat gesagt.:
Code:
return new BigInteger(multiply(valueOf(value)).toByteArray());
^^ Was soll denn das werden? Wieso nicht:
Code:
return multiply(valueOf(value));
Und die Konzeption betreffend stimme ich hier Andrey zu. Meine Begründung gibt's ein paar Kommentare weiter oben schon.

Ebenius
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben