Pertanyaan Cara memotong desimal ke x tempat di Swift


Dalam program cepat saya, saya memiliki angka desimal yang sangat panjang (misalnya 17.9384693864596069567) dan saya ingin memotong desimal ke beberapa tempat desimal (jadi saya ingin output menjadi 17.9384). Saya lakukan tidak ingin membulatkan angka ke 17.9385. Bagaimana saya bisa melakukan ini?

Bantuan dihargai!

Catatan: Ini bukan duplikat karena mereka menggunakan versi cepat yang sangat lama, sebelum beberapa fungsi ini dibuat. Juga, mereka menggunakan pelampung dan bilangan bulat, sedangkan saya berbicara tentang ganda. Dan pertanyaan / jawaban mereka jauh lebih rumit.


7
2018-03-11 17:37


asal


Jawaban:


Anda dapat merapikan ini lebih banyak lagi, dengan membuatnya menjadi ekstensi Double

extension Double
{
    func truncate(places : Int)-> Double
    {
        return Double(floor(pow(10.0, Double(places)) * self)/pow(10.0, Double(places)))
    }
}

dan kamu menggunakannya seperti ini

var num = 1.23456789
// return the number truncated to 2 places
print(num.truncate(2))

// return the number truncated to 6 places
print(num.truncate(6))

20
2018-03-11 18:02



Saya tahu yang satu ini.

Hanya lantai (bulatkan) nomor, dengan beberapa trik mewah.

let x = 1.23556789
let y = Double(floor(10000*x)/10000) // leaves on first four decimal places
let z = Double(floor(1000*x)/1000) // leaves on first three decimal places
print(y) // 1.2355
print(z) // 1.235

Jadi, kalikan dengan 1 dan angka 0 adalah tempat desimal yang Anda inginkan, letakkan itu, dan bagi dengan apa yang Anda gandakan dengan itu. Dan voila.


3
2018-03-11 17:42



Kode untuk digit khusus setelah desimal adalah:

let number = 17.9384693864596069567;
let merichle = Float(String(format: "%.1f", (number * 10000)).dropLast(2))!/10000

//merichle = 17.9384

Dan akhirnya, nomor Anda terpotong tanpa putaran ...


3
2018-02-10 09:18