GVKun编程网logo

java.math包简介(java的math包)

5

本文将为您提供关于java.math包简介的详细介绍,我们还将为您解释java的math包的相关知识,同时,我们还将为您提供关于gomath包+整形和浮点型互化、golangmath包中除法的用法、g

本文将为您提供关于java.math包简介的详细介绍,我们还将为您解释java的math包的相关知识,同时,我们还将为您提供关于go math包+ 整形和浮点型互化、golang math包中除法的用法、go语言math包中有哪些常用方法、go语言path包和filepath包的学习与使用的实用信息。

本文目录一览:

java.math包简介(java的math包)

java.math包简介(java的math包)

java.math包提供了java中的数学类
包括基本的浮点库、复杂运算以及任意精度的数据运算
 
image_5bd6634a_5366
''可以看得到,主要包括三个类一个枚举
BigDecimal和BigInteger接下来会详细介绍
先说下另外两个
 
原文地址: [十五]java.math包简介,RoundingMode与MathContext

RoundingMode

舍入行为/ 近似模式
 
image_5bd6634a_227b
 
对于很多计算,都可能涉及到精度的问题
比如两个数进行除法, 十进制下,1/3 
结果为无限循环小数
显然计算机中不可能保存这个无限循环的小数,那么这个 0.3333333......
你到底要近似成为多少?
0?  0.5? 0.33? 1?
RoundingMode 就是这么一个存在
如同它的名字一样,近似模式
为可能丢弃精度的数值操作指定一种舍入行为
 

舍入模式

UP 远离零方向舍入
DOWN 向零方向舍入
image_5bd6634a_35c1
CEILING 向正无限大方向舍入
FLOOR 向负无限大方向舍入
image_5bd6634a_53c9
HALF_UP 向最接近数字方向舍入
如果与两个相邻数字的距离相等,则向上舍入
HALF_DOWN 向最接近数字方向舍入
如果与两个相邻数字的距离相等,则向下舍入
HALF_EVEN
向最接近数字方向舍入
如果与两个相邻数字的距离相等,则向相邻的偶数舍入
HALF_UP/ HALF_DOWN /  HALF_DOWN  都是最接近数字舍入
不过如果两个相邻的数字距离相等,将会采取不同的模式
HALF_UP就是平时的四舍五入
 
 
UNNECESSARY 用于断言的舍入模式
请求的操作具有精确的结果,不需要进行舍入
 

示例

image_5bd6634a_25d7
 
拥有静态的valueOf方法,对BigDecimal中的常量,进行映射转换
返回RoundingMode对象
image_5bd6634b_40d0
 
这个enum 是打算用来替代 BigDecimal中的舍入模式常量
(BigDecimal.ROUND_UP、BigDecimal.ROUND_DOWN 等)
所以后续写代码使用这个枚举
 

MathContext

计算上下文/数学规则
image_5bd6634b_6c63
RoundingMode 是舍入模式的抽象描述,仅仅描述了舍入的规则
但是运算中还有一些其他的规则,比如
保留几位有效数字?
MathContext则是针对于计算的更进一步抽象
是封装上下文设置的不可变对象,它描述数字运算符的某些规则
他拥有两个属性
precision:某个操作使用的数字个数;结果舍入到此精度
roundingMode:一个 RoundingMode 对象,该对象指定舍入使用的算法
image_5bd6634b_4bf5
针对于这两个属性,也提供了两个方法进行获取
image_5bd6634b_364f
 

构造方法

MathContext(int setPrecision, RoundingMode setRoundingMode)
          构造一个新的 MathContext,它具有指定的精度和舍入模式
MathContext(int setPrecision)
          构造一个新的 MathContext,它具有指定的精度和 HALF_UP 舍入模式
调用上一个构造方法
image_5bd6634b_c46
MathContext(String val)
          根据字符串构造一个新的 MathContext
注意:该字符串的格式必须与 toString() 方法生成的字符串的格式相同
不是可以随便写的!!
 

equals

equals方法已经被重写,对比的是两个属性的数值是否相等
image_5bd6634b_7ac0
 
 

toString

注意这个格式可以用于构造对象
image_5bd6634b_fdf
 

常量

我们刚才已经说明,MathContext 就是针对于运算中的一些规则进行描述的类型
对于一些规定,已经内置了几个静态对象供我们使用
static MathContext  DECIMAL128
其精度设置与 IEEE 754R Decimal128 格式(即 34 个数字)匹配
舍入模式为 HALF_EVEN
这是 IEEE 754R 的默认舍入模式
static MathContext  DECIMAL32
其精度设置与 IEEE 754R Decimal32 格式(即 7 个数字)匹配
舍入模式为 HALF_EVEN
这是 IEEE 754R 的默认舍入模式
static MathContext  DECIMAL64
其精度设置与 IEEE 754R Decimal64 格式(即 16 个数字)匹配
舍入模式为 HALF_EVEN
这是 IEEE 754R 的默认舍入模式
static MathContext  UNLIMITED
其设置具有无限精度算法所需值的 MathContext 对象
 
image_5bd6634b_59c9
 

总结

RoundingMode  与MathContext 是针对舍入模式以及运算规则的一个抽象
RoundingMode 就是个枚举
MathContext 他在使用上也可以理解为"常量" 一样的存在

go math包+ 整形和浮点型互化

go math包+ 整形和浮点型互化

math包,go sdk用来做数学运算的包。

func main() {
    //四舍五入
    fmt.Println(math.Round(3.4))
    fmt.Println(math.Round(3.5))

    //绝对值
    fmt.Println(math.Abs(-3.4))

    //乘方
    fmt.Println(math.Pow(2,3))

    //开方根
    fmt.Println(math.Sqrt(9))

    
}

 

golang math包中除法的用法

golang math包中除法的用法

随着go语言的普及,越来越多的开发者开始尝试使用go语言进行编程。而在golang中,math包提供了许多数学计算的函数,其中就包括了除法的计算。本文将介绍golang math包中除法的用法和相关注意事项。

在golang中,我们可以使用math包中的Div函数来进行除法运算。Div函数的定义如下:

1

func Div(x, y float64) float64

登录后复制

Div函数接收两个浮点数参数x和y作为输入,返回x除以y的结果。接下来,我们通过一些示例来详细介绍Div函数的使用。

  1. 常规除法计算

我们先来看一下Div函数的最基本用法,即进行常规的除法计算。下面的代码演示了如何使用Div函数计算10除以3的结果:

1

2

3

4

5

6

7

8

9

10

11

12

13

package main

 

import (

    "fmt"

    "math"

)

 

func main() {

    x := 10.0

    y := 3.0

    result := math.Div(x, y)

    fmt.Println(result)

}

登录后复制

执行上面的代码,输出结果为3.3333333333333335。可以看到,Div函数在这里正确地计算了10除以3的结果。

立即学习“go语言免费学习笔记(深入)”;

  1. 对0进行除法运算

在进行除法运算时,必须注意避免被除数为0的情况。当被除数为0时,Div函数将返回一个特殊值NaN(Not a Number)。

下面的代码演示了如何使用Div函数进行除以0的运算:

1

2

3

4

5

6

7

8

9

10

11

12

13

package main

 

import (

    "fmt"

    "math"

)

 

func main() {

    x := 10.0

    y := 0.0

    result := math.Div(x, y)

    fmt.Println(result)

}

登录后复制

执行上面的代码,输出结果为NaN。可以看到,Div函数在遇到被除数为0的情况时,正确地返回了NaN。

  1. 对负数进行除法运算

当对负数进行除法运算时,结果可能会出现一些奇怪的情况。例如,当进行10除以-3的运算时,结果应该为-3.33333...,但Div函数却返回了-3.333333333333333,这是因为golang中除法的取整规则是向0取整,导致结果被舍去了小数部分的一位。

下面的代码演示了如何使用Div函数计算10除以-3的结果:

1

2

3

4

5

6

7

8

9

10

11

12

13

package main

 

import (

    "fmt"

    "math"

)

 

func main() {

    x := 10.0

    y := -3.0

    result := math.Div(x, y)

    fmt.Println(result)

}

登录后复制

执行上面的代码,输出结果为-3.333333333333333。可以看到,Div函数在这里正确地计算了10除以-3的结果,但由于向0取整的规则导致结果被舍去了一位小数。

在对负数进行除法运算时,如果需要得到精确的结果,可以使用golang内置的math包中的Round函数对结果进行四舍五入的处理。

  1. 精度问题

除法运算可能出现精度问题,导致计算的结果不够准确。例如,在进行0.1除以3的运算时,结果应该为0.03333...,但Div函数返回的结果却是0.03333333333333333。这是因为0.1在计算机中无法精确表示,因此在进行除法运算时,可能会出现一些小数位上的精度误差。

在进行除法计算时,应当注意这种精度误差的问题。如果需要更高的精度,可以考虑使用golang中的big包来进行高精度计算。

综上所述,golang math包提供的Div函数可以方便地进行除法运算。但在使用Div函数时,需要注意对0和负数的处理以及精度误差的问题。为了确保计算结果的准确性,我们应当对计算结果进行适当的处理和校验。

以上就是golang math包中除法的用法的详细内容,更多请关注php中文网其它相关文章!

go语言math包中有哪些常用方法

go语言math包中有哪些常用方法

go语言math包中的常用方法有:1、取绝对值方法abs();2、幂次方方法pow();3、开平方方法sqrt();4、开立方方法cbrt();5、向上取整方法ceil();6、向下取整方法floor()。

go语言math包中有哪些常用方法

本文环境:windows10系统、Go 1.11.2版本,本文适用于所有品牌的电脑。

(学习视频分享:编程视频)

详细介绍:

math包中常用的方法如下所示:

立即学习“go语言免费学习笔记(深入)”;

package main

import (
    "fmt"
    "math"
)

func main() {
    /*
        取绝对值,函数签名如下:
            func Abs(x float64) float64
    */
    fmt.Printf("[-3.14]的绝对值为:[%.2f]\n", math.Abs(-3.14))

    /*
        取x的y次方,函数签名如下:
            func Pow(x, y float64) float64
    */
    fmt.Printf("[2]的16次方为:[%.f]\n", math.Pow(2, 16))

    /*
        取余数,函数签名如下:
            func Pow10(n int) float64
    */
    fmt.Printf("10的[3]次方为:[%.f]\n", math.Pow10(3))

    /*
        取x的开平方,函数签名如下:
            func Sqrt(x float64) float64
    */
    fmt.Printf("[64]的开平方为:[%.f]\n", math.Sqrt(64))

    /*
        取x的开立方,函数签名如下:
            func Cbrt(x float64) float64
    */
    fmt.Printf("[27]的开立方为:[%.f]\n", math.Cbrt(27))

    /*
        向上取整,函数签名如下:
            func Ceil(x float64) float64
    */
    fmt.Printf("[3.14]向上取整为:[%.f]\n", math.Ceil(3.14))

    /*
        向下取整,函数签名如下:
            func Floor(x float64) float64
    */
    fmt.Printf("[8.75]向下取整为:[%.f]\n", math.Floor(8.75))

    /*
        取余数,函数签名如下:
            func Floor(x float64) float64
    */
    fmt.Printf("[10/3]的余数为:[%.f]\n", math.Mod(10, 3))

    /*
        分别取整数和小数部分,函数签名如下:
            func Modf(f float64) (int float64, frac float64)
    */
    Integer, Decimal := math.Modf(3.14159265358979)
    fmt.Printf("[3.14159265358979]的整数部分为:[%.f],小数部分为:[%.14f]\n", Integer, Decimal)

}
登录后复制

看图:

72d6c4443a6004259979785d0fb56ff.png

相关推荐:golang教程

以上就是go语言math包中有哪些常用方法的详细内容,更多请关注php中文网其它相关文章!

go语言path包和filepath包的学习与使用

go语言path包和filepath包的学习与使用

path包的使用

package main;

import (
	"fmt"
	"path"
)

//go语言path包的学习

func main() {
	//返回路径的最后一个元素
	fmt.Println(path.Base("./a/b/c"));
	//如果路径为空字符串,返回.
	fmt.Println(path.Base(""));
	//如果路径只有斜线,返回/
	fmt.Println(path.Base("///"));

	//返回等价的最短路径
	//1.用一个斜线替换多个斜线
	//2.清除当前路径.
	//3.清除内部的..和他前面的元素
	//4.以/..开头的,变成/
	fmt.Println(path.Clean("./a/b/../"));

	//返回路径最后一个元素的目录
	//路径为空则返回.
	fmt.Println(path.Dir("./a/b/c"));

	//返回路径中的扩展名
	//如果没有点,返回空
	fmt.Println(path.Ext("./a/b/c/d.jpg"));

	//判断路径是不是绝对路径
	fmt.Println(path.IsAbs("./a/b/c"));
	fmt.Println(path.IsAbs("/a/b/c"));

	//连接路径,返回已经clean过的路径
	fmt.Println(path.Join("./a","b/c","../d/"));

	//匹配文件名,完全匹配则返回true
	fmt.Println(path.Match("*","a"));
	fmt.Println(path.Match("*","a/b/c"));
	fmt.Println(path.Match("\\b","b"));

	//分割路径中的目录与文件
	fmt.Println(path.Split("./a/b/c/d.jpg"));
}

filepath包的使用

package main;

import (
	"path/filepath"
	"fmt"
	"os"
)

//学习filepath包,兼容各操作系统的文件路径

func main() {
	//返回所给路径的绝对路径
	path,_ := filepath.Abs("./1.txt");
	fmt.Println(path);

	//返回路径最后一个元素
	fmt.Println(filepath.Base("./1.txt"));
	//如果路径为空字符串,返回.
	fmt.Println(filepath.Base(""));
	//如果路径只有斜线,返回/
	fmt.Println(filepath.Base("///"));

	//返回等价的最短路径
	//1.用一个斜线替换多个斜线
	//2.清除当前路径.
	//3.清除内部的..和他前面的元素
	//4.以/..开头的,变成/
	fmt.Println(filepath.Clean("C:/a/b/../c"));
	fmt.Println(filepath.Clean("./1.txt"));

	//返回路径最后一个元素的目录
	//路径为空则返回.
	fmt.Println(filepath.Dir("./a/b/c"));
	fmt.Println(filepath.Dir("C:/a/b/c"));

	//返回链接文件的实际路径
	path2,_ := filepath.EvalSymlinks("1.lnk");
	fmt.Println(path2);

	//返回路径中的扩展名
	//如果没有点,返回空
	fmt.Println(filepath.Ext("./a/b/c/d.jpg"));

	//将路径中的/替换为路径分隔符
	fmt.Println(filepath.FromSlash("./a/b/c"));

	//返回所有匹配的文件
	match,_ := filepath.Glob("./*.go");
	fmt.Println(match);

	//判断路径是不是绝对路径
	fmt.Println(filepath.IsAbs("./a/b/c"));
	fmt.Println(filepath.IsAbs("C:/a/b/c"));

	//连接路径,返回已经clean过的路径
	fmt.Println(filepath.Join("C:/a","/b","/c"));

	//匹配文件名,完全匹配则返回true
	fmt.Println(filepath.Match("*","a"));
	fmt.Println(filepath.Match("*","C:/a/b/c"));
	fmt.Println(filepath.Match("\\b","b"));

	//返回以basepath为基准的相对路径
	path3,_ := filepath.Rel("C:/a/b","C:/a/b/c/d/../e");
	fmt.Println(path3);

	//将路径使用路径列表分隔符分开,见os.pathListSeparator
	//linux下默认为:,windows下为;
	fmt.Println(filepath.SplitList("C:/windows;C:/windows/system"));

	//分割路径中的目录与文件
	dir,file := filepath.Split("C:/a/b/c/d.jpg");
	fmt.Println(dir,file);

	//将路径分隔符使用/替换
	fmt.Println(filepath.ToSlash("C:/a/b"));

	//返回分区名
	fmt.Println(filepath.VolumeName("C:/a/b/c"));

	//遍历指定目录下所有文件
	filepath.Walk("./",func(path string,info os.FileInfo,err error) error {
		fmt.Println(path);
		return nil;
	});
}

 

今天关于java.math包简介java的math包的讲解已经结束,谢谢您的阅读,如果想了解更多关于go math包+ 整形和浮点型互化、golang math包中除法的用法、go语言math包中有哪些常用方法、go语言path包和filepath包的学习与使用的相关知识,请在本站搜索。

本文标签: