You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言班级男女占比计算程序结果异常,求原因与解决办法

Go程序计算班级性别占比错误的成因与解决方法

问题成因

  • 内置print函数输出格式缺陷:Go的内置print函数并非为格式化输出设计,对浮点数会默认采用科学计数法格式输出,且会附带额外符号标记,导致出现+5.000000+001这种异常显示(实际是5e+01即50的错误呈现形式)。
  • 变量覆盖问题:计算占比时直接将结果赋值给原始人数变量mujeres和hombres,虽本次输入未影响结果,但后续若需使用原始人数会导致数据丢失,属于不良编程习惯。
  • import语法错误:代码中import { "fmt" }不符合Go语法规范,正确写法应为import ("fmt"),该错误会导致编译失败,推测是输入时的笔误。

解决方法

  1. 替换为fmt.Printf进行格式化输出:利用格式化控制符指定浮点数的输出格式,避免科学计数法,同时正确输出百分号。
  2. 新增变量存储占比结果:保留原始人数变量,让代码逻辑更清晰,避免数据覆盖。
  3. 修正import语法:将错误的花括号改为圆括号。

修正后的代码

package main

import ("fmt")

var total, mujeres, hombres float64

func main() {
    fmt.Printf("Número de mujeres: ")
    fmt.Scanln(&mujeres)

    fmt.Printf("Número de hombres: ")
    fmt.Scanln(&hombres)

    total = mujeres + hombres
    // 用新变量存储占比结果
    porcentajeMujeres := (mujeres / total) * 100
    porcentajeHombres := (hombres / total) * 100

    // 格式化输出,%.0f表示输出整数形式,%%转义输出百分号
    fmt.Printf("En el salón de clases hay %.0f%% de mujeres y %.0f%% de hombres\n", porcentajeMujeres, porcentajeHombres)
}

说明

  • 若需要保留小数,可将%.0f改为%.2f(保留两位小数);
  • 输入50和50时,输出会变为En el salón de clases hay 50% de mujeres y 50% de hombres,符合预期。

内容的提问来源于stack exchange,提问作者JeanCarlo Alvarado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:01:15