Pembagian jumlahnya tidak sedikit

15

Tulis program atau fungsi yang menghasilkan bilangan bulat positif a, bdan c, dan cetak atau kembali a/bke ctempat desimal, menggunakan operasi + - * /% [tambah, kurangi, gandakan, bagi, modulasikan] pada bilangan bulat positif: Anda dapat menggunakan semua itu bahasa Anda memungkinkan, tetapi tidak pada angka floating point. Rentang a, b, c adalah rentang yang diizinkan untuk bilangan bulat tak bertanda dalam bahasa Anda. Hasil angka akan dipotong ke digit terakhir untuk dicetak (jadi tidak round).

Ini berarti bahwa jika bahasa Anda tidak memiliki tipe integer (hanya float), Anda dapat berpartisipasi dengan menggunakan angka float ini sebagai bilangan bulat positif saja. Petunjuk dari latihan ini adalah menulis fungsi yang menemukan digit dalam divisi float point, hanya menggunakan operasi + - * /% pada bilangan bulat [unsigned].

Contohnya

  • print(1,2,1) akan dicetak 0.5
  • print(1,2,2) akan dicetak 0.50
  • print(13,7,27) akan dicetak 1.857142857142857142857142857
  • print(2,3,1) akan dicetak 0.6
  • print(4,5,7) akan dicetak 0.8000000
  • print(4,5,1) akan dicetak 0.8
  • print(9999,23,1) akan dicetak 434.7
  • print(12345613,2321,89) akan mencetak jika Bahasa Anda memiliki 32 bit unsigned 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466

Kode terpendek dalam byte menang. Maaf jika ini tampak tidak jelas ... Saya juga tidak tahu bahasa, tidak ingat kata-kata dengan baik ... Lebih baik memiliki satu tautan ke Ideone.com atau tempat lain untuk dengan mudah mencoba jawabannya terutama untuk untuk uji beberapa input berbeda dari yang diusulkan.

RosLuP
sumber
1
Berapa kisaran bilangan bulat a, b, c?
Ton Hospel
@Ton Hospel kisaran a, b, c akan menjadi rentang yang memungkinkan bilangan bulat tak bertanda dalam Bahasa Anda: misalnya jika 32 bit unsigned, itu akan menjadi 0..0xFFFFFFFF tetapi jika c> = 0xFFFFFFF begitu besar hasilnya akan sedikit lambat ...
RosLuP
2
Ini adalah fungsi pembulatan - atau, lebih tepatnya, itu harus merupakan fungsi pembulatan untuk ditentukan dengan benar. Saat ini, tidak jelas apa jawaban yang tepat untuk misalnya (1,2,0). Lihat meta.codegolf.stackexchange.com/a/5608/194
Peter Taylor
1
Maaf telah membuka kembali pertanyaan ini; Saya pikir itu hampir siap untuk dibuka kembali, kecuali untuk masalah yang ditunjukkan Peter Taylor. Apa output untuk (1,2,0)?
ETHproduksi
2
Sebenarnya (1,2,0)harus tidak relevan karena 0bukan bilangan bulat positif. Dan saya lebih suka jika c tetap seperti itu karena saya lebih suka tidak harus berpikir tentang menambahkan .atau tidak
Ton Hospel

Jawaban:

5

05AB1E , 17 13 11 19 14 byte

Masukan dalam formulir b, a, c.
Disimpan 5 byte berkat Grimy .

‰`¹+I°*¹÷¦'.sJ

Cobalah online!

Emigna
sumber
Saya baru saja mencobanya secara online dengan input 13,7,27 dan jawabannya tidak benar
Mathieu J.
@shigazaru: Ini mengembalikan hasil yang sama dengan test case. Apakah Anda memperhatikan urutan inputnya b,a,c?
Emigna
Saya mencoba tombol "Coba online" di mana ada divisi ini: 12345613/2321 dengan 89 digit, tetapi hasilnya ada sesuatu seperti 5319.922 ... bukannya 5319.0922 ...
RosLuP
1
15:‰`I°*¹÷I°+¦'.sJ
Grimmy
2
14:‰`¹+I°*¹÷¦'.sJ
Grimmy
4

Haskell, 87 byte

(a#b)c|s<-show$div(a*10^c)b,l<-length s-c,(h,t)<-splitAt l s=['0'|l<1]++h++['.'|c>0]++t

Contoh penggunaan: (13#7)27 -> "1.857142857142857142857142857".

23 byte untuk menangani c==0 kasus ini dan menggunakan nol di depan bukan hal-hal seperti .5.

Cara kerjanya: kalikan adengan 10^c, bagi dengan b, berubah menjadi string, pisahkan di mana .harus dimasukkan, bergabung dengan kedua bagian dengan .di antara dan memperbaiki kasus tepi.

nimi
sumber
4

Perl 6 ,  58 57 55  48 byte

{(($^a.FatRat/$^b*10**$^c).Int.FatRat/10**$c).base(10,$c)}
{(Int($^a.FatRat/$^b*10**$^c).FatRat/10**$c).base(10,$c)}
{base Int($^a.FatRat/$^b*10**$^c).FatRat/10**$c: 10,$c}
{base ($^a*10**$^c div$^b).FatRat/10**$c: 10,$c}

Yang cukup menyebalkan adalah bisa disingkat menjadi adil {($^a.FatRat/$^b).base(10,$^c)} jika diizinkan untuk dibulatkan ke nilai terdekat.

Penjelasan:

# bare block lambda with 3 placeholder parameters 「$^a」, 「$^b」 and 「$^c」
{
  (
    (

      # create an Int containing all of the digits we care about
      $^a * 10 ** $^c div $^b

    ).FatRat / 10**$c  # turn it into a Rational

  ).base( 10, $c )     # force it to display 「$c」 digits after the decimal point
}
Brad Gilbert b2gills
sumber
Saya tidak terbiasa dengan perl6, tetapi bukankah (...).FatRat / 10**$xitu pembagian Rasional? Anda hanya diizinkan untuk membagi bilangan bulat.
nimi
@nimi a Rational adalah kelas dengan dua Ints .
Brad Gilbert b2gills
Operator matematika hanya diperbolehkan untuk tipe integer dan bukan untuk tipe numerik lainnya. Kutipan: "Petunjuk dari latihan ini ... untuk menulis fungsi ... hanya menggunakan operasi + - * /% pada bilangan bulat [unsigned]."
nimi
@nimi Jadi jika saya menulis implementasi ulang Rasional, dan tidak menambahkan does Realatau does Numericitu akan diizinkan? Bagaimana jika saya menambah (tambalan monyet) kelas yang ada untuk menghapus peran itu, apakah itu diizinkan?
Brad Gilbert b2gills
Tidak tahu Saya membaca spec seperti yang dikatakan sebelumnya: +-*/%hanya dengan tipe integer biasa. "plain integer" dalam hal fungsionalitas (pertama-tama: pembagian integer) bukan representasi internal. Apakah menurut Anda diizinkan menggunakan pustaka floating point perangkat lunak, yang (meskipun namanya) juga hanya menggunakan bilangan bulat untuk representasi internal?
nimi
3

Perl, 55 byte

Termasuk +3 untuk -p

Berikan a dan b pada satu baris pada STDIN, c pada baris berikutnya

division.pl
1 26
38
^D

division.pl:

#!/usr/bin/perl -p
eval'$\.=($_/$&|0)."."x!$\;$_=$_%$&.0;'x(/ .*/+<>)}{

yang $_/$&adalah diperdebatkan sedikit. Saya sebenarnya ingin divisi integer di sana tetapi perl tidak memilikinya tanpa memuat modul khusus. Jadi untuk sementara non-integer yang kemudian saya segera potong (menggunakan|0) jadi saya berakhir dengan integer yang akan diberikan oleh divisi integer. Itu dapat ditulis ulang sebagai($_-$_%$&)/$&untuk sementara bahkan tidak memiliki nilai non-integer (itu secara internal akan tetap menjadi pelampung sekalipun)

Ton Hospel
sumber
Bisakah Anda menggunakannya $-untuk membuatnya hanya int? (Saya pikir ada batasan ketat pada campuran / maksnya, dan saya yakin Anda sudah mempertimbangkannya, tetapi meskipun perlu diperiksa!)
Dom Hastings
@HomHastings Masih akan dipotong setelah melakukan pembagian floating point. Perl tidak memiliki divisi integer tanpause integer
Ton Hospel
Ah, jadi itu hanya ditutupi dengan $-, bagus untuk diketahui. Terima kasih!
Dom Hastings
3

JavaScript (ES6), 55 50 byte

f=(a,b,c,d=".")=>~c?(a/b|0)+d+f(a%b*10,b,c-1,""):d

(a/b|0)melakukan divisi float tetapi segera melakukan cast ke integer. Tolong beri tahu saya jika ini tidak diizinkan.

Produksi ETH
sumber
3

PHP, 187 Bytes

bekerja dengan string untuk pembilang yang bisa menjadi nilai int lebih besar dari itu PHP_INT_MAX

list(,$n,$d,$c)=$argv;$a=str_split($n);while($a){$n.=array_shift($a);if($n>=$d||$r)$n-=$d*$r[]=$n/$d^0;}if(!$r)$r[]=0;if($c)$r[]=".";while($c--){$n*=10;$n-=$d*$r[]=$n/$d^0;}echo join($r);

Saya tidak punya kesempatan lain maka 13/7 disingkat menjadi 1.8571428571429 dan saya mencapai jadi bukan ujian dengan 27 tempat desimal

Dengan cara ini 36 Bytes tidak diperbolehkan

<?=bcdiv(($z=$argv)[1],$z[2],$z[3]);
Jörg Hülsermann
sumber
divisi float tidak diizinkan sesuai OP
Maltysen
@Maltysen Maaf saya membuat kemunduran. Saya sangat takut untuk menemukan solusi yang lebih pendek sehingga saya tidak mengenali hal itu terhadap spesifikasi.
Jörg Hülsermann
2

Pyth - 21 19 18 16 14 byte

Akan melihat lebih dari format input, yang dapat menyimpan banyak.

j\.c`/*E^TQE]_

Test Suite . (PS 27 tidak selesai online, jadi saya melakukan 10 sebagai gantinya).

Maltysen
sumber
@ Emigna juga tidak harus karena 0itu bukan bilangan bulat positif (meskipun op terus menambahkan contoh dengan c=0)
Ton Hospel
@TonHospel: Ah, memang. Saya melihat contoh-contohnya. Saya dapat mempersingkat jawaban saya :)
Emigna
Tidak berfungsi dengan angka yang memiliki 0 di depan setelah titik desimal, misalnya 2/21 hingga 10 desimal.
Emigna
2/21 dengan 10 digit hanya mencetak 9 digit setelah titik
RosLuP
2/21 dengan 10 angka seperti yang dikatakan Emigna alih-alih 0,09 ... cetak 0,9 ...
RosLuP
2

JavaScript (ES6),  64  62 59 byte

Disimpan 2 byte berkat produk ETH.

Divisi yang disertakan selalu menghasilkan bilangan bulat.

f=(a,b,n,s)=>~n?f((q=(a-a%b)/b,a%b*10),b,n-1,s?s+q:q+'.'):s

console.log(f(13,7,27))

Arnauld
sumber
Apakah melewatkan msama sekali masih bekerja? f=(a,b,n,s)=>n+1?f((q=(a-a%b)/b,a%b*10),b,n-1,s?s+q:q+'.'):sadalah 60 byte.
ETHproduksi
@ ETProduk - Memang. Terima kasih!
Arnauld
2

Java 7, 105 byte

import java.math.*;String c(int...a){return new BigDecimal(a[0]).divide(new BigDecimal(a[1]),a[2],3)+"";}

Tidak digabungkan & kode uji:

Coba di sini.

import java.math.*;
class M{
  static String c(int... a){
    return new BigDecimal(a[0]).divide(new BigDecimal(a[1]), a[2], 3)+"";
  }

  public static void main(String[] a){
    System.out.println(c(1, 2, 1));
    System.out.println(c(1, 2, 2));
    System.out.println(c(13, 7, 27));
    System.out.println(c(2, 3, 1));
    System.out.println(c(4, 5, 7));
    System.out.println(c(4, 5, 0));
    System.out.println(c(9999, 23, 0));
    System.out.println(c(12345613, 2321, 89));
  }
}

Keluaran:

0.5
0.50
1.857142857142857142857142857
0.6
0.8000000
0
434
5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
Kevin Cruijssen
sumber
Saya tidak berpikir ini valid, karena pada dasarnya divisi floating-point, meskipun itu disebut dividedan tidak /.
corvus_192
@ corvus_192 Jawaban Java terhapus lainnya yang diposting lebih lambat dari saya memiliki alasan, yang akan saya salin-tempel di sini (Kredit untuk penjelasan ini diberikan ke @SocraticPhoenix ): " Cara Kerja: Java BigDecimals diimplementasikan sebagai BigIntegers, dengan skala. Ini secara teknis adalah titik apung, namun objek BigInteger dan BigDecimal hanya menggunakan inttipe untuk menyimpan nilai numerik. (Bukankah itu keren? BigInteger adalah int[]angka. Seperti, {1,2,5} dalam basis 10 adalah 125. Saya Saya tidak yakin apa basis angka BigInteger sebenarnya, tapi saya kira itu lebih dari 10. "
Kevin Cruijssen
2

Ruby, 67 byte

->(a,b,c){('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/,'\1.\2')}

jika saya membuatnya berfungsi untuk menjalankan kasus uji di atas

def print(a,b,c); ('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/, '\1.\2'); end
 => :print 
print(1,2,1)   # would print 0.5
 => "0.5" 
print(1,2,2)   # would print 0.50
 => "0.50" 
print(13,7,27) # would print 1.857142857142857142857142857
 => "1.857142857142857142857142857" 
print(2,3,1)   # would print 0.6
 => "0.6" 
print(4,5,7)   # would print 0.8000000
 => "0.8000000" 
print(4,5,1)   # would print 0.8
 => "0.8" 
print(9999,23,1) # would print 434.7
 => "434.7" 
print(12345613,2321,89) # would print if your Language has 32 bit unsigned 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
 => "5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466" 
"('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/, '\1.\2')".length
 => 52 
Mathieu J.
sumber
Selamat datang di kode golf! Untuk sebagian besar bahasa, ketika Anda mendefinisikan suatu fungsi, Anda harus mendefinisikannya sepenuhnya, dan Anda tidak dapat mengandalkan asumsi ada variabel yang sudah ditentukan sebelumnya seperti itu. Di Ruby, cara terpendek untuk mendefinisikan lambda adalah dengan di ->a,b,c{...}mana Anda mengganti elips dengan kode Anda. (Penetapan sebenarnya dari variabel tidak diperlukan oleh konsensus.)
Value Ink
terima kasih, saya mendapat kesan yang salah bahwa orang lain telah meninggalkan bagian itu ... tetapi Anda benar. Saya baru saja menambahkannya.
Mathieu J.
2

Racket 203 byte

(let*((s(~r(/ a b)#:precision c))(sl(string-split s "."))(s2(list-ref sl 1))(n(string-length s2)))
(if(< n c)(begin(for((i(- c n)))(set! s2(string-append s2 "0")))(string-append(list-ref sl 0)"."s2))s))

Tidak Disatukan:

(define (f a b c)
  (let* ((s (~r(/ a b)#:precision c))
         (sl (string-split s "."))
         (s2 (list-ref sl 1))
         (n (string-length s2)))
    (if (< n c)
        (begin 
          (for ((i (- c n)))
            (set! s2 (string-append s2 "0")))
          (string-append (list-ref sl 0) "." s2))
        s )))

Pemakaian:

(f 7 5 3)
(f 1 2 1) 
(f 1 2 2) 
(f 13 7 27)

Keluaran:

"1.400"
"0.5"
"0.50"
"1.857142857142857142857142857"

Metode lain (bukan jawaban yang valid di sini):

(real->decimal-string(/ a b)c)
juga
sumber
Saya khawatir ini tidak valid, karena real->decimal-stringmengharapkan realnilai sebagai argumen pertama, demikian /juga pembagian floating point, yang tidak diperbolehkan dalam tugas ini. Juga: real->decimal-stringputaran ( (f 1 6 7)-> 0.1666667) alih-alih memotong.
nimi
Terima kasih atas pengamatannya. Saya akan segera memperbaiki kode.
rnso
1

q, 196 byte

w:{((x 0)div 10;1+x 1)}/[{0<x 0};(a;0)]1;{s:x 0;m:x 2;r:(10*x 1)+$[m<0;{x*10}/[-1*m;a];{x div 10}/[m;a]]mod 10;d:1#.Q.s r div b;($[m=-1;s,".",d;$[s~,:'["0"];d;s,d]];r mod b;m-1)}/[c+w;("";0;w-1)]0

Untuk menjalankan: atur a, b, c terlebih dahulu.

Boston Walker
sumber
1

Rust, 114 byte

fn print(mut a:u32,b:u32,c:u32){let mut p=||{print!("{}",a/b);a=a%b*10};p();if c>0{print!(".")}for _ in 0..c{p()}}

kode tes:

fn main() {
    print(1, 2, 1);    println!(""); // should print 0.5
    print(1, 2, 2);    println!(""); // should print 0.50
    print(13, 7, 27);  println!(""); // should print 1.857142857142857142857142857
    print(2, 3, 1);    println!(""); // should print 0.6
    print(4, 5, 7);    println!(""); // should print 0.8000000
    print(4, 5, 0);    println!(""); // should print 0
    print(9999, 23, 0);println!(""); // should print 434
    print(12345613,2321,89); println!("\n");  // 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
}
Christopher Phillips
sumber
1

PHP, 89 byte

list(,$a,$b,$c)=$argv;for($o=intdiv($a,$b).'.';$c--;)$o.=intdiv($a=10*($a%$b),$b);echo$o;

intdiv () diperkenalkan di php 7 sehingga diperlukan. php 7.1 akan memungkinkan saya untuk mengubah daftar () menjadi [] dan juga akan menghemat 4 byte.

gunakan seperti:

php -r "list(,$a,$b,$c)=$argv;for($o=intdiv($a,$b).'.';$c--;)$o.=intdiv($a=10*($a%$b),$b);echo$o;" 1 2 1
pengguna59178
sumber
ganti $o.=intdiv($a=10*($a%$b),$b);dengan $o.=($a=10*($a%$b))/$b^0;akan menghemat 4 Bytes.
Jörg Hülsermann
Awalnya saya akan mengambil saran itu (saya mengedit jawaban dan segalanya) tetapi pada pemikiran kedua itu adalah divisi floating point dan kemudian pemain untuk int sehingga untuk peningkatan <10% panjangnya saya lebih suka tetap sepenuhnya dalam spesifikasi pertanyaan.
user59178
1

C #, 126 byte

(a,b,c)=>{var v=a*BigInteger.Parse("1"+new string('0',c))/b+"";return v.PadLeft(c+1,'0').Insert(Math.Max(1,v.Length-c),".");};

Program lengkap dengan uji kasus:

using System;
using System.Numerics;

namespace DivisionOfNotSoLittleNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<BigInteger,BigInteger,int,string>f= (a,b,c)=>{var v=a*BigInteger.Parse("1"+new string('0',c))/b+"";return v.PadLeft(c+1,'0').Insert(Math.Max(1,v.Length-c),".");};

            //test cases:
            Console.WriteLine(f(1,2,1));    //0.5
            Console.WriteLine(f(1,2,2));    //0.50
            Console.WriteLine(f(13,7,27));  //1.857142857142857142857142857
            Console.WriteLine(f(2,3,1));    //0.6
            Console.WriteLine(f(4,5,7));    //0.8000000
            Console.WriteLine(f(4,5,1));    //0.8
            Console.WriteLine(f(9999,23,1));    //434.7
            Console.WriteLine(f(12345613,2321,89)); //5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
            Console.WriteLine(f(2,3,1));    //0.6
            Console.WriteLine(f(4,5,2));    //0.80
        }
    }
}

Divisi integer diimplementasikan. Jumlah ukuran apa pun dapat digunakan, karena BigIntegertipe data (impor System.Numericsdiperlukan). Parameter hitungan digit cdibatasi hingga 2 ^ 31-1, namun harus menyediakan lebih dari cukup digit.

adrianmp
sumber
1

Groovy ( 78 77 42 Bytes)

{a,b,n->Eval.me(a+'.0g').divide(b, n, 1)}​

Penjelasan

Eval.me(a+'.0g');- Konversi dari input integer ke input BigDecimal. Dalam notasi BigDecimal asyik adalah notasi ganda dengan G atau g terlampir. Saya juga bisa menggunakan konstruktor new BigDecimal(it)tetapi ini menghemat satu byte.
.divide(b, n, 1)- Bagi dengan b dengan n presisi, mode pembulatan setengah-atas.

Cobalah di sini: https://groovyconsole.appspot.com/script/5177545091710976

Guci Gurita Ajaib
sumber
Tapi BigDecimal mendukung operasi floating point yang, kecuali saya salah, saya yakin diindikasikan dilarang untuk latihan ini.
Mathieu J.
1

Batch, 122 byte

@set/as=%1/%2,r=%1%%%2
@set s=%s%.
@for /l %%a in (1,1,%3)do @set/ad=r*10/%2,r=r*10%%%2&call set s=%%s%%%%d%%
@echo %s%
Neil
sumber
1

Mathematica, 50 byte

StringInsert[ToString@Floor[10^# #2/#3],".",-#-1]&

Fungsi yang tidak disebutkan namanya dari tiga argumen (yang diperintahkan c, a, buntuk menyimpan byte di suatu tempat), yang mengembalikan string. Ini dikalikan a/bdengan 10^c, mengambil fungsi bilangan bulat terbesar, lalu mengkonversi ke string dan memasukkan titik desimal di tempat yang tepat. Sayang sekali nama fungsinya tidak lebih pendek.

Greg Martin
sumber
1

Python 3, 62 Bytes

a,b,c=map(int,input().split());print("{:.{1}f}".format(a/b,c))

Coba Di Sini

* Catatan : repl.it menggunakan ver yang lebih lama dari Python 3 , yang mengharuskan semua indeks bidang harus ditentukan, artinya "{:.{1}f}"akan menjadi "{0:.{1}f}", membuatnya 63 byte di repl.it

Cara Penggunaan

Masukkan ketiga nilai dengan spasi di antaranya. yaitu input 1 2 1akan memberikan hasil0.5

Penjelasan

input().split(): Mendapat input pengguna dan membaginya menjadi daftar dengan pemisah (spasi)

a,b,c = map(int,XX): Memetakan variabel ke dalam nilai yang ditentukan oleh pengguna dengan tipe int

"{:.{1}f}".format(a/b,c): Memformat string untuk menampilkan hasil pembagian dan menggantikannya {1}dengan cmengatur tempat desimal dari string yang ditampilkan

print(XX): mencetak string yang disediakan

pengguna7297223
sumber
1

Python 3 , 58 byte

lambda a,b,c:(lambda s:s[:-c]+"."+s[-c:])(str(a*10**c//b))

Cobalah online!

Ini tepat untuk jumlah desimal yang ditentukan selama a * 10 ** ctidak terlalu besar.

Saya mencoba Python 2 untuk mempersingkat str(...)ke `...`tetapi Python 2 menyisipkan Lpada akhirnya jika terlalu besar jadi memeriksa untuk itu akan mengambil byte jauh lebih banyak daripada nilainya.

HyperNeutrino
sumber
1

Stax , 13 byte

ä·oαì█↕▬AS¥é▼

Jalankan dan debug itu

Argumen diterima secara c a bberurutan.

rekursif
sumber
Masalahnya akan menjadi kasus "cetak (9999,23,1)" hasil cetak dalam posting adalah "434,7" sedangkan hasil Anda tampaknya "4,7" sama dengan kasus terakhir: 5319.092201etc bukannya 9.092201etc
RosLuP
Saya tidak setuju ... Saya mengikuti pagi ini tautan Anda dan hasil untuk case "print (9999,23,1)" dalam urutan fungsi Anda adalah 4,7 dan bukan 434,7
RosLuP
@RosLuP: Saya mengubah pendekatannya. Hasilnya sekarang dengan benar `434.7`. Saya juga mengurangi ukurannya dengan satu byte dalam proses.
rekursif
0

C, 67 byte

h(a,b,i){int j=!i;for(;printf(j++?"%u":"%u.",a/b),i--;a=10*(a%b));}

Cobalah online!

Beberapa versi sebelumnya, saya pikir memiliki bug dalam memori baca dari ditugaskan ke program ... Terima kasih kepada ceilingcat dan untuk semua ...

RosLuP
sumber
@ceilingcat ok terima kasih
RosLuP
Saya suka yang terakhir 69 byte
RosLuP
62 byte
ceilingcat
@ceilingcat ok terima kasih
RosLuP