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
 

blacks9n

Mitglied
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 ;)
 
S

stev.glasow

Gast
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 ^^
 
S

SlaterB

Gast
wenn schon, dann eine Hilfsmethode

big = Big.multiply(big, 5);

die netterweise gleich noch auf null prüft usw ;)
 

Ebenius

Top Contributor
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
 
S

stev.glasow

Gast
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
 
G

Gast

Gast
najo also bigintger in int umwandeln is klar aber kann ich das auch iwie umgekehrt sprich int zu nem biginteger?
 

Ebenius

Top Contributor
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?
 
S

Spacerat

Gast
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
 

Ebenius

Top Contributor
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.

Ähnliche Java Themen

Neue Themen


Oben