Saya memiliki metode Java di mana saya menjumlahkan satu set angka. Namun, saya ingin angka negatif diperlakukan sebagai positif. Jadi (1) + (2) + (1) + (- 1) harus sama dengan 5.
Saya yakin ada cara yang sangat mudah untuk melakukan ini - saya hanya tidak tahu caranya.
java
negative-number
Baki
sumber
sumber
Jawaban:
Panggil saja Math.abs . Sebagai contoh:
Yang akan diatur
x
ke5
.sumber
Konsep yang Anda gambarkan disebut "nilai absolut", dan Java memiliki fungsi bernama Math.abs untuk melakukannya untuk Anda. Atau Anda dapat menghindari panggilan fungsi dan melakukannya sendiri:
atau
sumber
Anda sedang mencari nilai absolut, sobat.
Math.abs(-5)
mengembalikan 5 ...sumber
Gunakan
abs
fungsinya:sumber
sumber
Coba ini (negatif di depan x valid karena merupakan operator unary, temukan lebih lanjut di sini ):
Dengan ini, Anda dapat mengubah positif ke negatif dan negatif ke positif.
Namun , jika Anda hanya ingin membuat angka negatif positif maka coba ini:
ATAU , jika Anda memilih untuk tidak menggunakan metode abs () karena alasan tertentu, cobalah ini:
Semoga ini bisa membantu! Semoga berhasil!
sumber
Apakah Anda bertanya tentang nilai absolut?
Math.abs (...) adalah fungsi yang mungkin Anda inginkan.
sumber
Anda ingin memasukkan setiap nomor
Math.abs()
. misalnyamencetak "1".
Jika Anda ingin menghindari penulisan
Math.
bagian-, Anda dapat memasukkan util Matematika secara statis. Cukup tulisbersama dengan impor Anda, dan Anda dapat merujuk ke
abs()
-fungsi hanya dengan menulissumber
Cara termudah, jika verbose untuk melakukan ini adalah dengan membungkus setiap nomor dalam panggilan Math.abs (), jadi Anda akan menambahkan:
dengan perubahan logika untuk mencerminkan bagaimana kode Anda terstruktur. Verbose, mungkin, tetapi ia melakukan apa yang Anda inginkan.
sumber
-
tanda - tanda itu saja? Atau sebaliknya, termasuk jika dia tidak memiliki kontrol, bukankah lebih baik menggunakan fungsi sepertiabsoluteSum( int[] values ){ /*loop with Math.abs()*/ }
daripada membungkus Math.abs () secara manual di setiap nilai? [-1]Ketika Anda perlu merepresentasikan nilai tanpa konsep kerugian atau ketidakhadiran (nilai negatif), itu disebut "nilai absolut".
Logika untuk mendapatkan nilai absolut sangat sederhana:
"If it's positive, maintain it. If it's negative, negate it"
.Artinya, logika dan kode Anda harus berfungsi seperti berikut:
Ada 2 cara Anda dapat meniadakan nilai:
value = (-value);
value = value * (-1);
Keduanya sebenarnya adalah dua sisi dari koin yang sama. Hanya saja biasanya Anda tidak ingat itu
value = (-value);
sebenarnyavalue = 1 * (-value);
.Nah, seperti bagaimana Anda benar-benar melakukannya di Jawa, itu sangat sederhana, karena Java sudah menyediakan fungsi untuk itu, di
Math class
:value = Math.abs(value);
Ya, melakukannya tanpa
Math.abs()
hanya sebaris kode dengan matematika yang sangat sederhana, tetapi mengapa membuat kode Anda terlihat jelek? Cukup gunakanMath.abs()
fungsi yang disediakan Java ! Mereka menyediakannya karena suatu alasan!Jika Anda benar-benar perlu melewati fungsi tersebut, Anda dapat menggunakan
value = (value < 0) ? (-value) : value;
, yang merupakan versi kode yang lebih ringkas yang saya sebutkan di bagian logika (3), menggunakan operator Ternary (? :
) .Selain itu, mungkin ada situasi di mana Anda ingin selalu mewakili kehilangan atau ketidakhadiran dalam suatu fungsi yang mungkin menerima nilai positif dan negatif.
Alih-alih melakukan beberapa pemeriksaan yang rumit, Anda bisa mendapatkan nilai absolut, dan meniadakannya:
negativeValue = (-Math.abs(value));
Dengan mengingat hal itu, dan mempertimbangkan sebuah kasus dengan jumlah beberapa angka seperti milik Anda, merupakan ide bagus untuk mengimplementasikan suatu fungsi:
Bergantung pada probabilitas Anda mungkin memerlukan kode terkait lagi, mungkin juga merupakan ide bagus untuk menambahkannya ke pustaka "utils" Anda sendiri, memisahkan fungsi-fungsi tersebut ke dalam komponen inti mereka terlebih dahulu, dan mempertahankan fungsi terakhir hanya sebagai sarang panggilan ke fungsi split-core dari komponen inti:
sumber
Kenapa tidak
multiply that number with -1
?Seperti ini:
sumber
Jika Anda tertarik pada mekanisme komplemen dua, inilah cara tingkat rendah yang benar-benar tidak efisien, tetapi ilustratif dibuat:
sumber
Saya akan merekomendasikan solusi berikut:
tanpa kesenangan seksual:
(Di atas tidak benar-benar berfungsi.)
dengan menyenangkan lib:
sumber
Kalau tidak:
sumber
Fungsi perpustakaan
Math.abs()
dapat digunakan.Math.abs()
mengembalikan nilai absolut dari argumenmisalnya:
int x=-5;
System.out.println(Math.abs(x));
Output: 5
int y=6;
System.out.println(Math.abs(y));
Output: 6
sumber
Untuk mengonversi angka negatif ke angka positif (ini disebut nilai absolut), gunakan Math.abs (). Metode Math.abs () ini berfungsi seperti ini
“number = (number < 0 ? -number : number);".
Dalam contoh di bawah ini,
Math.abs(-1)
akan mengkonversi angka negatif 1 ke positif 1.public static public void (String [] args) {
sumber
Saya membutuhkan nilai absolut yang panjang, dan melihat ke dalam Math.abs dan menemukan bahwa jika argumen saya kurang dari LONG.MIN_VAL yang -9223372036854775808l, maka fungsi abs tidak akan mengembalikan nilai absolut tetapi hanya nilai minimum. Dalam hal ini jika kode Anda menggunakan nilai abs ini lebih lanjut maka mungkin ada masalah.
sumber
Bisakah Anda mencoba yang ini?
sumber
Di kotlin Anda dapat menggunakan unaryPlus
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/unary-plus.html
sumber
jangan lakukan ini
number = (number <0? -number: number);
atau
if (number <0) number = -number;
ini akan menjadi bug ketika Anda menjalankan menemukan bug pada kode Anda itu akan melaporkannya sebagai RV_NEGATING_RESULT_OF
sumber