go语言保留2位小数 golang保留两位小数精度( 五 )


a.在不进行模糊测试的情况下运行模糊测试,以确保种子输入通过 。
如果您在该文件中有其他测试,您也可以运行go test -run=FuzzReverse,并且您只想运行模糊测试 。
b.运行FuzzReverse模糊测试,查看是否有任何随机生成的字符串输入会导致失败 。这是使用go test新标志-fuzz执行的 。
模糊测试时发生故障,导致问题的输入被写入将在下次运行的种子语料库文件中go test,即使没有-fuzz标志也是如此 。要查看导致失败的输入,请在文本编辑器中打开写入 testdata/fuzz/FuzzReverse 目录的语料库文件 。您的种子语料库文件可能包含不同的字符串 , 但格式相同 。
语料库文件的第一行表示编码版本 。以下每一行代表构成语料库条目的每种类型的值 。由于 fuzz target 只需要 1 个输入,因此版本之后只有 1 个值 。
c.运行没有-fuzz标志的go test; 新的失败种子语料库条目将被使用:
由于我们的测试失败 , 是时候调试了 。
实现SQL动态保留小数位数CREATE TABLE #Temp (
IDINT,
valueVARCHAR(20),
saveNum INT
);
go
INSERT INTO #Temp
SELECT 1, '2.01', 3UNION ALL
SELECT 2, '0.5',2
go
UPDATE
#Temp
SET
value = https://www.04ip.com/post/LTRIM( STR( CAST(value as decimal(20, 10)), 18,saveNum) )
go
SELECT
*
FROM
#Temp
go
IDvaluesaveNum
----------- ---------- -----------
1 2.0103
2 0.502
(2 行受影响)
注:
CAST(value as decimal(20, 10))
首先把 字符类型的 value 转换为数值类型 。精度为 (20,10) 。这里你可以修改为你系统所允许的最大精度 。
STR( 上面的数字, 18,saveNum)
将数值 格式化为字符串,其中 , 精度为 18 ,  小数位数为 saveNum 。这里你需要把 18 修改为你系统所允许的最大精度 。
基础知识 - Golang 中的格式化输入输出 【格式化输出】
// 格式化输出:将 arg 列表中的 arg 转换为字符串输出
// 使用动词 v 格式化 arg 列表,非字符串元素之间添加空格
Print(arg列表)
// 使用动词 v 格式化 arg 列表,所有元素之间添加空格,结尾添加换行符
Println(arg列表)
// 使用格式字符串格式化 arg 列表
Printf(格式字符串, arg列表)
// Print 类函数会返回已处理的 arg 数量和遇到的错误信息 。
【格式字符串】
格式字符串由普通字符和占位符组成,例如:
"abc%+ #8.3[3]vdef"
其中 abc 和 def 是普通字符 , 其它部分是占位符,占位符以 % 开头(注:%% 将被转义为一个普通的 % 符号 , 这个不算开头),以动词结尾,格式如下:
%[旗标][宽度][.精度][arg索引]动词
方括号中的内容可以省略 。
【旗标】
旗标有以下几种:
空格:对于数值类型的正数,保留一个空白的符号位(其它用法在动词部分说明) 。
0:用 0 进行宽度填充而不用空格,对于数值类型,符号将被移到所有 0 的前面 。
其中 "0" 和 "-" 不能同时使用 , 优先使用 "-" 而忽略 "0" 。
【宽度和精度】
“宽度”和“精度”都可以写成以下三种形式:
数值 | * | arg索引*
其中“数值”表示使用指定的数值作为宽度值或精度值,“ ”表示使用当前正在处理的 arg 的值作为宽度值或精度值,如果这样的话,要格式化的 arg 将自动跳转到下一个 。“arg索引 ”表示使用指定 arg 的值作为宽度值或精度值,如果这样的话,要格式化的 arg 将自动跳转到指定 arg 的下一个 。
宽度值:用于设置最小宽度 。

推荐阅读