文章摘要
这篇文章介绍了如何将一个二进制字符字符串转换为十进制数。函数`binaryToDecimal`接受一个字符串`val`作为输入,并通过处理二进制字符串的每一位来计算其十进制值。函数首先检查字符串中是否包含小数点,并根据小数点的位置进行处理。此外,文章还提到函数中存在一个潜在的BUG,未正确处理十进制数的小数点位数。总结来看,文章核心内容是二进制转十进制的实现过程及潜在问题。
func binaryToDecimal(val string) string {
// 获取二进制字符字符串
// 使用前可使用正则校验 [0-1]|[0-1].[0-1]
var text=val
// 指数 v1
var v1 float64=0
var len=len(text)
// 查看是否包含小数点
contains :=strings.Contains(text, “.”)
if contains {
index :=strings.LastIndex(text, “.”)
if index==(len -1) {
text=text[0 : len-1]
} else {
v3 :=len – index
v3–
v1=float64(0 – v3)
}
}
fmt.Println(v1)
// 结果
var result float64
for i :=len -1; i >=0; i– {
u :=string(text[i])
if u==”.” {
continue
}
v2,error :=strconv.ParseFloat(u, 64)
if error !=nil {
fmt.Println(“转换失败”,error)
}
// 乘数
pow :=math.Pow(2, v1)
// 数值累加
result=result + (v2 * pow)
// 指数递增
v1++
}
// 这里有个BUG,未判断得出的十进制数小数点后面有几位小数
return strconv.FormatInt(int64(result), 10)
}
// 获取二进制字符字符串
// 使用前可使用正则校验 [0-1]|[0-1].[0-1]
var text=val
// 指数 v1
var v1 float64=0
var len=len(text)
// 查看是否包含小数点
contains :=strings.Contains(text, “.”)
if contains {
index :=strings.LastIndex(text, “.”)
if index==(len -1) {
text=text[0 : len-1]
} else {
v3 :=len – index
v3–
v1=float64(0 – v3)
}
}
fmt.Println(v1)
// 结果
var result float64
for i :=len -1; i >=0; i– {
u :=string(text[i])
if u==”.” {
continue
}
v2,error :=strconv.ParseFloat(u, 64)
if error !=nil {
fmt.Println(“转换失败”,error)
}
// 乘数
pow :=math.Pow(2, v1)
// 数值累加
result=result + (v2 * pow)
// 指数递增
v1++
}
// 这里有个BUG,未判断得出的十进制数小数点后面有几位小数
return strconv.FormatInt(int64(result), 10)
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。