iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Go Float32bit() 结果不是预期的
  • 251
分享到

Go Float32bit() 结果不是预期的

2024-02-06 09:02:04 251人浏览 独家记忆
摘要

问题内容 例如:16777219.0 十进制转换为位 16777219 -> 1 0000 0000 0000 0000 0000 0011 mantissa: 23 bit 000

问题内容

例如:16777219.0 十进制转换为位

16777219 -> 1 0000 0000 0000 0000 0000 0011

mantissa: 23 bit
0000 0000 0000 0000 0000 001

exponent:
24+127 = 151
151 -> 10010111

result shoud be:
0_10010111_000 0000 0000 0000 0000 0001

1001011100000000000000000000001

但是:

fmt.printf("%b\n", math.float32bits(float32(16777219.0)))

// 1001011100000000000000000000010

为什么 Go float32bit() 结果不是预期的?

参考:

  • base-conversion.ro

更新:

fmt.Printf("16777216.0:%b\n", math.Float32bits(float32(16777216.0)))
fmt.Printf("16777217.0:%b\n", math.Float32bits(float32(16777217.0)))
//16777216.0:1001011100000000000000000000000
//16777217.0:1001011100000000000000000000000
fmt.Printf("16777218.0:%b\n", math.Float32bits(float32(16777218.0)))
//16777218.0:1001011100000000000000000000001
fmt.Printf("16777219.0:%b\n", math.Float32bits(float32(16777219.0)))
fmt.Printf("16777220.0:%b\n", math.Float32bits(float32(16777220.0)))
fmt.Printf("16777221.0:%b\n", math.Float32bits(float32(16777221.0)))
//16777219.0:1001011100000000000000000000010
//16777220.0:1001011100000000000000000000010
//16777221.0:1001011100000000000000000000010

fmt.Printf("000:%f\n", math.Float32frombits(0b_10010111_00000000000000000000000))
// 000:16777216.000000
fmt.Printf("001:%f\n", math.Float32frombits(0b_10010111_00000000000000000000001))
// 001:16777218.000000
fmt.Printf("010:%f\n", math.Float32frombits(0b_10010111_00000000000000000000010))
// 010:16777220.000000
fmt.Printf("011:%f\n", math.Float32frombits(0b_10010111_00000000000000000000011))
// 011:16777222.000000

规则是什么?


正确答案


go 给出正确的 ieee-754 二进制浮点结果 - 舍入到最接近的值,平局为偶数。

go 编程语言规范

float32     the set of all ieee-754 32-bit floating-point numbers

十进制

16777219

是二进制的

1000000000000000000000011

对于 32 位 ieee-754 浮点二进制,24 位整数尾数为

100000000000000000000001.1

四舍五入到最接近的值,偶数给出

100000000000000000000010

删除 23 位尾数的隐式一位得到

00000000000000000000010
package main

import (
    "fmt"
    "math"
)

func main() {
    const n = 16777219
    fmt.printf("%d\n", n)
    fmt.printf("%b\n", n)
    f := float32(n)
    fmt.printf("%g\n", f)
    fmt.printf("%b\n", math.float32bits(f))
}

https://www.PHP.cn/link/f0bbf5fb2b067fda7b491dc2307411e4

16777219
1000000000000000000000011
1.677722e+07
1001011100000000000000000000010

以上就是Go Float32bit() 结果不是预期的的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Go Float32bit() 结果不是预期的

本文链接: https://www.lsjlt.com/news/561346.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go Float32bit() 结果不是预期的
    问题内容 例如:16777219.0 十进制转换为位 16777219 -> 1 0000 0000 0000 0000 0000 0011 mantissa: 23 bit 000...
    99+
    2024-02-06
  • 网站优化达不到预期效果的原因分析
    这篇文章将为大家详细讲解有关网站优化达不到预期效果的原因分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一般达不到优化效果的关键因素有两个:一、网站关键词排名上去了,但是营销没跟上互联网的环境和现实环境...
    99+
    2023-06-10
  • pytorch预测之解决多次预测结果不一致问题
    为什么多次预测结果不一致 1、检查是否在每次预测前使用 model.eval() 或者是 with torch.no_grad(): for ... 推荐下面的方法...
    99+
    2024-04-02
  • 找不到错误,Go 脚本没有按预期工作
    php小编新一在编写Go脚本时可能会遇到找不到错误的问题,导致脚本无法按预期工作。这是一个常见的困扰,但也是可以解决的。本文将为大家介绍一些可能导致这个问题的原因,并提供一些解决方法,...
    99+
    2024-02-09
  • 测试中 mux.Vars() 返回的是 nil,而不是预期的映射对象
    哈喽!今天心血来潮给大家带来了《测试中 mux.Vars() 返回的是 nil,而不是预期的映射对象》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正...
    99+
    2024-04-04
  • Go:不遵守 ResponseController 的截止日期
    php小编草莓在这里给大家带来关于"Go:不遵守 ResponseController 的截止日期"的介绍。在软件开发中,ResponseController 是一个常见的控制器,用于...
    99+
    2024-02-09
  • 如何让Go通道工作者有不同的结果长度?
    一分耕耘,一分收获!既然都打开这篇《如何让Go通道工作者有不同的结果长度?》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出...
    99+
    2024-04-05
  • Go 和 Bash 结合起来,是不是更有效率?
    随着技术的不断发展,我们越来越依赖计算机来完成各种任务,而在完成这些任务的过程中,我们也需要不断地寻找更加高效的方式。Go 和 Bash 是两种常用的编程语言,它们各自有着自己的优点和特点。那么,将它们结合起来使用,是否能够提高我们的工作...
    99+
    2023-08-03
    bash 同步 开发技术
  • git验证线上的版本是否符合预期
    目录正文如何使用项目中做如下配置总结正文 git-commit-id-maven-plugin插件,会根据当前分支的版本号生成一个git.properties文件。 git.prop...
    99+
    2024-04-02
  • python合并RepeatMasker预测结果中染色体的overlap区域
    目录前言问题思路1. 预处理2. 将pretreatment.txt作为输入文件,3.去重+归并排序4.开始比对,gap=505.将new_result.txt作为输出文件,生成结果...
    99+
    2024-04-02
  • 调用strings和bytes标准库包里TrimLeft和TrimRight函数经常会返回不符预期的结果,这些函数的实现存在bugs吗?
    ...
    99+
    2024-04-02
  • MySQL Cluster的结果顺序是怎样的
    本篇文章为大家展示了MySQL Cluster的结果顺序是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。最近搭建了MySQL Cluster的环境来学习,发现...
    99+
    2024-04-02
  • 使用带有sync.WaitGroup的goroutine结果不一致
    在Go语言中,使用goroutine可以实现并发执行任务,而sync.WaitGroup则是一种同步机制,用于等待一组goroutine的完成。然而,php小编香蕉发现,在某些情况下,...
    99+
    2024-02-09
    go语言 同步机制
  • Go语言变量的生命周期是什么
    这篇文章主要介绍了Go语言变量的生命周期是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言变量的生命周期是什么文章都会有所收获,下面我们一起来看看吧。在Go语言中,变量的生命周期指的是在程序运行期间变...
    99+
    2023-07-04
  • MyBatis的SQL执行结果和客户端执行结果不一致问题排查
    目录问题引入问题介绍排查问题调试 MyBatis源码JDBC 执行 SQL解决问题待解决问题最近遇到一个调试很久的问题,MyBatis 查询 Oracle 数据库查询结果与在客户端查...
    99+
    2023-05-15
    MyBatis SQL执行结果 客户端执行结果
  • go语言结构体指的是什么
    这篇文章主要介绍“go语言结构体指的是什么”,在日常操作中,相信很多人在go语言结构体指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go语言结构体指的是什么”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-04
  • go语言的数据结构是什么
    常见的数据结构有基本数据类型、复合数据类型、其他数据结构。详细介绍:1、基本数据类型包括整数类型:int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64;浮点数...
    99+
    2023-12-21
    go语言 数据结构
  • 同一段程序在Java和C中的不同结果是怎么样的
    今天就跟大家聊聊有关同一段程序在Java和C中的不同结果是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C语言:#include <stdio.h>&n...
    99+
    2023-06-17
  • MySQL如何根据不同条件显示不同的结果
    要根据不同条件显示不同的结果,你可以使用MySQL的CASE语句。CASE语句类似于编程语言中的switch语句,它允许你根据不同的...
    99+
    2024-04-09
    MySQL
  • go语言是不是面向对象的
    小编给大家分享一下go语言是不是面向对象的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!go语言即不是面向对象,也不是面向过程,因为Golang并没有明显的倾向,而是更倾向于让编程者去考虑该怎么去用它,也许它的特色就是灵活...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作