Tujuan
Diberi nomor input, bulatkan ke nomor terdekat dengan satu angka signifikan.
Persyaratan
Memasukkan
- Nomor titik mengambang.
- Asumsikan nomor input menghasilkan output dalam batas tipe data (mis. Abaikan kesalahan luapan.)
- 0 adalah input yang tidak valid.
- Angka-angka yang tidak dapat direpresentasikan secara akurat dalam tipe data floating point (mis.
"0.35"
Disimpan sebagai0.3499999
) tidak harus didukung.
Keluaran
- Nomor terdekat yang terdiri dari satu digit bukan nol dan sejumlah nol digit.
- Hasilnya harus mendukung angka negatif dan angka fraksional.
- Ketika input terletak tepat di antara dua output yang mungkin, bulatkan dari nol.
Presentasi
Fokusnya adalah pada perhitungan dan bukan pada presentasi. Output mungkin berupa tipe data floating point. Ini bisa berupa teks baik secara penuh atau dalam notasi ilmiah. Jika Anda menemukan celah di mana menyajikan cara tertentu mengurangi jumlah byte Anda, pujian untuk Anda!
Contohnya
9
-3000
.2
0.2
-.2
7e12
5e-15
1e0
Uji Kasus
Input Output
1 1
10 10
17 20
99 100
54321 50000
56789 60000
-123 -100
-789 -800
0.23 0.2
0.25 0.3
-0.25 -0.3
4.56e23 5e23
4.56e-23 5e-23
Mencetak gol
Kode dengan byte terkecil dihitung setelah satu minggu menang.
Jawaban:
MATL , 3 byte
Cobalah online! Atau verifikasi semua kasus uji .
Uji kasus
0.25
gagal untuk kompiler yang berjalan di Oktaf pada TIO, tetapi berfungsi di Matlab pada Windows:Perilaku yang berbeda disebabkan oleh
sprintf
fungsi Octave / Matlab menggunakan pembulatan "bankir" atau ".5 dari nol", tergantung pada platform. Informasi dan tes lebih lanjut dapat ditemukan di sini .Selama 6 byte ,
bekerja baik pada Oktaf dan Matlab. Verifikasi semua kasus uji .
sumber
C # (.NET Core) , 19 byte
Cobalah online!
Contoh:
sumber
Javascript, 19 byte
sumber
0
atau25
.0
tidak masuk akal bagi saya. Tapi0.35
masalahnya ... sepertinya Javascript berusaha menghindari bias dalam pembulatan, tetapi spec menginginkan bias.0.35
tidak menulis25
sebelumnya. Saya pikir itu memenuhi spesifikasi untuk 25 - ia mengembalikan "3e +1" yang tampaknya benar bagi saya.0.35
karena0.35
tidak memiliki representasi floating-point yang tepat. Perilaku harus bergantung pada browser; Saya mendapatkan25
↦2e+1
di Firefox.Retina ,
6362 byteCobalah online!
sumber
0.99
.0.099
dll. Upaya saya untuk memperbaiki: Coba online!99.99
,,100.001
...0.099
, maaf. Sisi baiknya saya pikir Anda bisa menghapus+
setelah;
pada baris ketiga.PHP , 45 byte
Cobalah online!
Metode yang sama dengan jawaban python 2 saya.
Tampaknya juga menangani dengan benar
0.35
, yang menempatkannya pasak di atas jawaban JS juga: Dsumber
T-SQL, 27 byte
Menggunakan kode pemformatan .Net yang sama dengan jawaban C # Carlos Alejo . Input berasal dari kolom float i pada tabel t yang sudah ada , sesuai standar IO kami
Kasus uji:
(Cukup praktis bahwa saya dapat memuat tabel input dengan semua nilai ini dan menjalankannya sekaligus.)
sumber
Python 2 , 62 byte
Cobalah online!
Tidak digunakan untuk python golf, tetapi ini berfungsi.
Gagal
0.35
karena ketidakakuratan floating point.Terima kasih kepada Anders Kaseorg untuk menunjukkan bahwa ini berfungsi dengan benar di Python 2
sumber
0.25
seharusnya0.3
.round
putaran Python 2 menjauh dari nol, sedangkan putaran Python 3 menjadi genap, itu sebabnya ini bekerja di Py2 tetapi tidak 3.log(x,10)
sebagai gantinyalog10(abs(x))
.Tipu daya , 23 byte
Cobalah online!
sumber
Excel, 14 byte
sumber
Perl 5 , 15 byte
Cobalah online!
sumber
Zsh , 14 byte
Port jawaban perl. Cobalah secara Online!
sumber
Keempat (gforth) , 24 byte
Cobalah online!
Input diharapkan pada tumpukan floating point. Output adalah ke stdout
Saya tidak suka membuat perubahan pada presisi global (untuk contoh ini) fungsi output floating point, tetapi menghemat banyak byte agar tidak harus mengembalikan nilai sebelumnya di akhir. Tidak menghasilkan dalam rekayasa atau notasi ilmiah, terlepas dari input.
Catatan: Untuk beberapa alasan, juru bahasa dikonversi
0.25
ke0.2
, sementara instalasi lokal saya mengkonversi0.25
ke0.3
. Saya tidak sepenuhnya yakin mengapa ini terjadi, tetapi karena saya mendapatkan hasil yang benar secara lokal, saya membiarkan jawaban saya apa adanyasumber