刘小帅

基本数据类型二
package main import "fmt" func main() { /...
扫描右侧二维码阅读全文
09
2021/04

基本数据类型二

package main

import "fmt"

func main() {
    // go get  github.com/shopspring/decimal
    // 1、 定义float类型
    // var a float32 = 3.12
    // fmt.Printf("值 %v--%f,类型%T\n", a, a, a) //3.12--3.120000,类型float32
    // fmt.Println(unsafe.Sizeof(a))          // float32占用4个字节

    // var b float64 = 3.12
    // fmt.Printf("值:%v--%f,类型%T\n", b, b, b) //值:3.12--3.120000,类型float64
    // fmt.Println(unsafe.Sizeof(b))          //float64 占用8个字节

    // 2、 %f 输出float类型 %.2f输出数据的时候保留两位小数
    // var c float64 = 3.1415925535
    // fmt.Printf("%v--%f--%.2f--%.4f", c, c, c, c) //3.1415925535--3.141593--3.14--3.1416

    // 3、64位的系统中Go 语言中浮点数默认是 float64
    // f1 := 3.145656456
    // fmt.Printf("%f--%T", f1, f1) //3.145656--float64

    // 4、 Golang科学计数法表示浮点类型

    // var f2 float32 = 3.14e2 // 表示f2等于3.14乘以10的2次方
    // fmt.Printf("%f--%T", f2, f2) //314.000000--float32

    // var f3 float32 = 3.14e-2     // 表示f3等于3.14除以10的2次方
    // fmt.Printf("%f--%T", f3, f3) //0.031400--float32

    // 5、Golang中float精度丢失问题

    // var f4 float64 = 1129.6
    // fmt.Println(f4 * 100) //112959.99999999999

    // m1 := 8.2
    // m2 := 3.8
    // fmt.Println(m1 - m2) //4.3999999999999995

    // 加
    // var num1 float64 = 3.1
    // var num2 float64 = 2
    // d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(float64(num2)))
    // fmt.Println(d1) //5.1

    //减
    // m1 := 8.2
    // m2 := 3.8
    // m3 := decimal.NewFromFloat(m1).Sub(decimal.NewFromFloat(m2))
    // fmt.Println(m3) //4.4
    //乘法 Mul 除法 Div

    // 6、 int类型转换成float类型

    // a := 10
    // b := float64(a)
    // fmt.Printf("a的类型是%T,b的类型是%T", a, b) // a的类型是int,b的类型是float64

    // 7、 float32类型转换成float64类型
    // var a1 float32 = 23.4
    // var a2 = float64(a1)
    // fmt.Printf("a1的类型是%T,a2的类型是%T", a1, a2)

    // 8、 float类型转换成int类型 (不建议这样做)
    // var c1 float32 = 23.45
    // var c2 = int(c1)
    // fmt.Printf("c2的值%v c2的类型%T", c2, c2) //c2的值23 c2的类型int
}
package main

func main() {
    /*
        Go语言中以bool类型进行声明布尔型数据,布尔型只有true和false

        注意:
        1. 布尔类型变量默认值为false
        2. Go语言中不允许将整形强制转换成布尔型
        3. 布尔型无法参与数值运算,也无法与其他类型进行转换
    */

    // var flag bool = true
    // fmt.Printf("%v--%T", flag, flag) //true--bool

    //1、布尔类型变量的默认值为false
    // var b bool
    // fmt.Println(b) //false

    //2、string类型变量的默认值为空
    // var s string
    // fmt.Println(s) //

    //3、int类型变量的默认值为0
    // var i int
    // fmt.Println(i) //0

    //4、float类型变量的默认值为0

    // var f float32
    // fmt.Println(f) //0

    // var a = true
    // if a {
    //     fmt.Println(a) //true
    // }

    //5、布尔型无法参与数值运算,也无法与其他类型进行转换

    // var s = "this is str" //错误写法
    // if s {
    //     fmt.Println("true") //.\test.go:42:2: non-bool s (type string) used as if condition
    // }
    // var f1 = false
    // if f1 {
    //     fmt.Println("true")
    // } else {
    //     fmt.Println("false") //false
    // }
}
Last modification:April 9th, 2021 at 10:18 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment