Go:
Làm tròn số

Làm thế nào:

Trong Go, không có hàm đã xây dựng sẵn nào để làm tròn số đến một số lượng chữ số thập phân cụ thể trong gói math. Tuy nhiên, bạn có thể đạt được việc làm tròn thông qua sự kết hợp của các hàm cho số nguyên hoặc triển khai một hàm tùy chỉnh cho số thập phân.

Làm tròn đến số nguyên gần nhất:

Để làm tròn đến số nguyên gần nhất, bạn có thể sử dụng hàm math.Floor() với việc cộng thêm 0.5 cho số dương, và math.Ceil() trừ đi 0.5 cho số âm, tùy thuộc vào hướng bạn muốn làm tròn.

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Println(math.Floor(3.75 + 0.5))  // Kết quả: 4
	fmt.Println(math.Ceil(-3.75 - 0.5)) // Kết quả: -4
}

Làm tròn đến một số chữ số thập phân cụ thể:

Để làm tròn đến số chữ số thập phân cụ thể, một hàm tùy chỉnh có thể được sử dụng, nơi bạn nhân số đó với 10^n (nơi n là số chữ số thập phân), làm tròn đến số nguyên gần nhất như trước, và sau đó chia cho 10^n.

package main

import (
	"fmt"
	"math"
)

func roundToDecimalPlace(number float64, places int) float64 {
	shift := math.Pow(10, float64(places))
	return math.Round(number*shift) / shift
}

func main() {
	fmt.Println(roundToDecimalPlace(3.14159, 2)) // Kết quả: 3.14
	fmt.Println(roundToDecimalPlace(-3.14159, 3)) // Kết quả: -3.142
}

Sâu xa hơn

Làm tròn số là một thao tác cơ bản trong lập trình máy tính, liên quan đến thách thức lịch sử về việc biểu diễn số thực trong hệ nhị phân. Nhu cầu làm tròn phát sinh do nhiều số thực không thể được biểu diễn một cách chính xác trong nhị phân, dẫn đến lỗi xấp xỉ.

Trong Go, cách tiếp cận để làm tròn phần nào là thủ công so với những ngôn ngữ cung cấp hàm làm tròn được xây dựng sẵn đến chữ số thập phân cụ thể. Tuy nhiên, gói math của thư viện chuẩn Go cung cấp các khối xây dựng cơ bản (như math.Floormath.Ceil) để xây dựng bất kỳ cơ chế làm tròn nào cần thiết cho ứng dụng.

Cách tiếp cận thủ công này, mặc dù có vẻ phức tạp hơn, mang lại cho lập trình viên quyền kiểm soát tốt hơn về cách làm tròn số, đáp ứng nhu cầu về độ chính xác và độ chính xác cho các ứng dụng khác nhau. Các lựa chọn khác như thư viện bên thứ ba hoặc thiết kế hàm làm tròn tùy chỉnh có thể cung cấp các giải pháp đơn giản hơn khi đối mặt với số phức hoặc cần thực hiện các hoạt động toán học tiên tiến hơn không được bao phủ bởi thư viện chuẩn.

Kết luận, mặc dù thư viện chuẩn của Go có thể không cung cấp chức năng làm tròn số đến chữ số thập phân trực tiếp, bộ sưu tập hàm toán học toàn diện của nó cho phép các nhà phát triển triển khai giải pháp làm tròn mạnh mẽ phù hợp với nhu cầu cụ thể của họ.