Project1

标题: 数字位数多转为单位(ai生成的脚本)【补档] [打印本页]

作者: ppspssss    时间: 2025-3-7 22:21
标题: 数字位数多转为单位(ai生成的脚本)【补档]
本帖最后由 ppspssss 于 2025-3-9 14:29 编辑

由于此贴为之前电脑有的草稿存档,被我找到出来,但注释的是没有存档,因而没注释 (原贴发贴日期2024.8.13)
使用为:百度AIhttps://chat.baidu.com/
那时还没有deepseek 是老版百度ai,现在问的话应该会不同

#1(国际英文常用单位,千k,百万m,十亿b,万亿(兆)t)
默设问ai是会用英文单位,中国单位则需加额外的问题 (我一开始就看上去感觉不对劲又不知哪里,很长时间才反应过来是英文单位)
1


#2 (输出错误有小数无法使用,好像是失败了因为不应该有powers_of_ten那个指定位数要再加额外问题再问AI (具体问什么忘了,纪录没了),请看第3个脚本才是能正常使用)
2

#3 (中国单位版本)

RUBY 代码复制
  1. __END__
  2. def format_number_with_unit(number)
  3.   units = ['', '万', '亿', '万亿']
  4.   exponent = 0
  5.   while number >= 10000
  6.     number /= 10000.0
  7.     exponent += 1
  8.   end
  9.  
  10.   # 为了避免小数点后的零过多,我们可以四舍五入到指定的小数位数
  11.   # 这里以四舍五入到小数点后一位为例
  12.   formatted_number = number#.round(1) #basic #低版本ruby无round(位数),因此不用
  13.  
  14.   #formatted_number = number #b
  15.  
  16.   # 如果数字小于1且大于0,我们可能想要以“0.x”的形式显示它,而不是“x”
  17.   # 但这取决于你的具体需求
  18.   if formatted_number < 1 && formatted_number > 0
  19.     formatted_number_str = formatted_number.to_s
  20.   else
  21.     # 对于整数部分,去掉尾随的.0
  22.     formatted_number = sprintf("%.3f", formatted_number)
  23.   # p formatted_number
  24.     formatted_number_str = formatted_number.to_s
  25.   end
  26.  
  27.   # 如果指数为0,即原数小于1000,则不添加单位
  28.   return formatted_number_str + (exponent > 0 ? units[exponent] : '')
  29. end
  30.  
  31. # 测试函数
  32. p format_number_with_unit(-88888888888)
  33. p format_number_with_unit(0.1111)
  34. p format_number_with_unit(1234)       # 输出: 1千
  35. p format_number_with_unit(12345)    # 输出: 1万
  36. p format_number_with_unit(123456)   # 输出: 12万
  37. p format_number_with_unit(1234567) # 输出: 123万
  38. p format_number_with_unit(12345678) # 输出: 1234万
  39. p format_number_with_unit(123456789) # 输出: 1亿
  40. p format_number_with_unit(1234567891) # 输出: 12亿
  41. p format_number_with_unit(12345678912) # 输出: 123亿
  42. p format_number_with_unit(123456789123) # 输出: 1234亿
  43. p format_number_with_unit(1234567891234) # 输出: 1万亿
  44. p format_number_with_unit(12345678912345) # 输出: 12万亿
  45. #p format_number_with_unit(1000000000) # 输出: 10亿 #basic
  46. #p format_number_with_unit(1000000000) # 输出: 1十亿
  47. #p format_number_with_unit(100000000000) # 输出: 100十亿
  48. #p format_number_with_unit(1000000000000) # 输出: 1万亿
  49. #p format_number_with_unit(1234567)    # 输出: 123.5万(四舍五入)#basic
  50. #p format_number_with_unit(1234567)    # 输出: 123万#b
  51. #p format_number_with_unit(500)        # 输出: 500(没有单位,因为小于1000)





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1