Membulatkan dari nol
Terinspirasi oleh Round menuju nol .
Diberikan input angka melalui metode yang masuk akal, bulatkan angka "menjauh dari nol" - angka positif dibulatkan ke atas, dan angka negatif dibulatkan ke bawah.
Jika Anda ingin mengambil input sebagai string (misalnya melalui STDIN), Anda harus dapat menangani angka dengan atau tanpa titik desimal. Jika Anda menganggapnya sebagai angka, itu setidaknya harus mampu menangani presisi titik-mengambang (tidak diperlukan presisi ganda) atau bilangan rasional.
Anda dapat menampilkan angka titik-mengambang dengan titik desimal (mis. 42.0) jika diinginkan. (Atau bahkan ada beberapa test case output floating-point dan beberapa integer output, jika itu membuat jawaban Anda lebih pendek.)
Tidak ada celah standar, dll.
Uji kasus
-99.9 => -100
-33.5 => -34
-7 => -7
-1.1 => -2
0 => 0
2.3 => 3
8 => 8
99.9 => 100
42.0 => 42
-39.0 => -39
.0
seperti yang disarankan oleh kasus uji?-0.1
dan0.1
Jawaban:
Excel, 13 byte
Alternatif
sumber
EVEN
, apa fungsi yang aneh ..R, 32 byte
sumber
Jelly , 4 byte
Tautan monadik yang menerima angka yang menghasilkan bilangan bulat.
Cobalah online! Atau lihat test-suite .
Bagaimana?
sumber
¡
kerjanya untuk angka negatif? Saya tidak berpikir itu didokumentasikan¡
sifat berulang diimplementasikan denganfor index in range(repetitions)
loop dalam kode.range([stop=]-1)
kosong karenastart
default ke0
danstep
default ke1
dan "Untuk langkah positif, isi rentangr
ditentukan oleh rumus dir[i] = start + step*i
manai >= 0
danr[i] < stop
." docs¡
Perilaku bergantung pada perilaku Pythonrange
, danrange(-1).__iter__().__next__()
segera melemparStopIteration
.Python 3 , 23 byte
Cobalah online!
-1 byte terima kasih kepada xnor
sumber
(1|-(i>0))
untuk menghemat satu byte(1,-1)[i>0]
.g=lambda r:0if r==0 else(int(r)+r/abs(r)if r/int(r)!=1 else r)
Jelly ,
54 byteCobalah online!
Port ini menjawab Stax rekursif ke dalam Jelly, jadi periksa jawaban itu untuk penjelasan.
-1 byte terima kasih kepada Nick Kennedy
Jelly ,
65 byteCobalah online!
-1 byte terima kasih kepada Jonathan Allan
Bagaimana cara kerjanya?
sumber
ĊḞ>?0
akan bekerja seperti 6 Anda.AĊ×Ṡ
adalah 4 dan secara fungsional identik dengan jawaban pertama Anda.Java (JDK) , 18 byte
Cobalah online!
Penjelasan
Menggunakan
BigDecimal
input dan output sebagai.BigDecimal
memiliki metodesetScale
yang mengatur skala angka. Parameter pertama adalah jumlah digit setelah pemisah titik, yang kedua adalah mode pembulatan.ROUND_UP
adalah pembulatan "jauh-dari-nol" dan memiliki nilai0
jadi saya hardcode nilai itu.sumber
Vim, 36 byte / penekanan tombol
Cobalah online! atau Verifikasi semua Uji Kasus!
Penjelasan:
sumber
$F-a <esc>
alih-alih baris pertama dan makro dengan/
sebagai bersyarat di tempat:g
dan:norm
memberikan 29 byte tio.run/##HczBCoJAFEZhWva/QpuLCNbizoxalBXRInqJMpjGCYVwmkx7/…J , 6 byte
Cobalah online!
Hanya 1 karakter berubah dari jawaban saya pada pertanyaan sepupu .
sumber
C # (Visual C # Compiler) ,
41 byte27 byte24 byteCobalah online!
Posting pertama di sini, bersenang-senang dengannya, harap Anda menyukainya. Agak merasa C # tempatnya kosong di sini
-14 tnx ke @ data kadaluarsa
-3 tnx ke @ night2
sumber
Code golf submission
fungsionalitas, Baru saja menambahkan sedikit kata-kata saya sendiri sampai akhir, tetapi untuk edit saya baru saja mengubah baris kode itu, dan ur di sana, saya lupa untuk perbarui tautan, yang membawa kita kembali ke langkah pertama, untuk hanya memodifikasi sekali, agak SOLID di sini, ngomong-ngomong, tnx untuk petunjuknya jugaPesona Rise ,
1816 byteCobalah online!
"Tambah" (jauh dari nol) 0,999999 dan lantai hasilnya.
µ
adalah hal yang paling dekat dengan operator bahasa yang sangat kecil. DenganTrunc(x)
perintah yang berfungsi dengan baik , jawab sekarang mendukung0
sebagai input.sumber
divide by input
untuk mendapatkan "tanda" dari nilai input, yang tentu saja, membaginya dengan 0 ketika inputnya 0. Tidak ada (yang baik) jalan keluar saat ini. Akan membutuhkan komit ini terlebih dahulu. Saya akan menyodok Dennis (manfaat samping, jawabannya akan semakin pendek).0
dengan benar.Stax , 6 byte
Jalankan dan debug itu
Prosedur:
sumber
C,
944339 byteterima kasih kepada ceilingcat untuk 39 byte
TIO
sumber
Retina 0.8.2 , 38 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Hapus nol setelah titik desimal, untuk memastikan bahwa angka tersebut bukan bilangan bulat; dua pertandingan berikutnya gagal jika tidak ada digit setelah titik desimal.
Jika bagian integer adalah semua
9
s, awalan a0
untuk memungkinkan kenaikan melimpah.Tambahkan bagian bilangan bulat dari angka tersebut.
Hapus bagian pecahan dari nomor tersebut.
sumber
05AB1E , 6 byte
5-byter pastinya dimungkinkan ..
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
JavaScript (ES6), 20 byte
Cobalah online!
Berkomentar
sumber
n=>(~~n-n%1)%1+n
) sampai saya menemukan bahwa kode saya tidak berfungsi untuk angka antara -1 dan 1. Anda mungkin bisa mencari cara untuk membuat ini bekerja dengan 3 byte terakhir ada kiri!Perl 6 , 18 byte
Cobalah online!
Penjelasan
sumber
MathGolf , 5 byte
Cobalah online!
Penjelasan
Sangat menyenangkan menemukan penggunaan untuk
‼
operator.sumber
PHP , 30 byte
Cobalah online!
Jika angka bukan bilangan bulat, berdasarkan tanda -1 (untuk desimal negatif) atau 1 (untuk desimal positif) ditambahkan ke dalamnya dan kemudian bilangan bulat bagian dari angka baru dicetak.
PHP , 32 byte
Cobalah online!
Pada dasarnya output
floor
input jika kurang dari 0, selainceil
itu.PHP , 34 byte
Cobalah online!
sumber
Brachylog , 7 byte
Cobalah online!
atau
⌉₁ℕ₁|⌋₁
.sumber
Bahasa Wolfram (Mathematica) , 18 byte
Cobalah online!
sumber
Faktor , 57 byte
Cobalah online!
sumber
APL (Dyalog Unicode) , 15 byte
Cobalah online!
Dfn Sederhana. Penggunaan
⎕IO←0
.Bagaimana:
sumber
sed, 131 byte + 2 byte untuk
-r
flagTidak disatukan
sumber
Perl 5
-pF/\./
, 35 byteCobalah online!
sumber
3.0
. Untuk sakelar,-pF\.
sudah cukup://
bersifat opsional.0.0
benarJavaScript (node.js),
302321 byteTerinspirasi oleh jawaban C #.
Berkat @ Value Ink dan @Gust van de Wal untuk -7 byte!
Terima kasih lagi, @Gust van de Wal untuk -2 byte lagi!
sumber
+=
kapan+
akan melakukan trik dalam kasus ini? -1 byteparseInt()
, saya hanya akan menggunakan~~
di awal atau operator bitwise lain seperti|0
atau^0
di akhir untuk menyimpan potongan byte lainnya+=
, terima kasih untuk menunjukkannyaPerl 6 , 19 byte
Cobalah online!
Bukan solusi terpendek, tapi saya sedang mengusahakannya. Pada dasarnya ini memotong angka, kemudian menambahkan satu dari nol jika angka itu tidak lengkap untuk memulai
sumber
Java (OpenJDK 8) , 43 byte
Cobalah online!
sumber
return
pernyataan eksplisit .(int)a/a<1
kea%1!=0
: 30 byteBigDecimal.setScale
metode yang memberikan hasil luar biasa, seperti yang ditunjukkan oleh jawaban sayaJapt , 6 byte
Coba di sini
sumber
Merah , 46 byte
Cobalah online!
Versi yang sedikit lebih mudah dibaca adalah 2 byte lebih panjang (nama fungsi panjang itu!):
sumber
Scala , 16 byte
Cobalah online!
Scala , 22 byte
Cobalah online!
sumber