当前位置: 首页 > 面试题库 >

十进制数,to_char和Oracle

公良俊楚
2023-03-14
问题内容

我试图找出to_char()的格式规范,这将给我以下结果。

to_char(0.1, '[FORMAT_SPEC]')

给出0.1并:

to_char(1, '[FORMAT_SPEC]')

给出1。

我尝试了以下解决方案

to_char(0.1)

给出“ .1”。

to_char(0.1, 'FM0.099')

给出0.1,这是可以的,但是:

to_char(1, 'FM0.099')

给出1.0,这不行。

你有什么建议吗?


问题答案:

返回的精度需要保持一致,因此唯一的选择是使用DECODE或CASE语句有条件地返回您需要的内容:

CASE 
  WHEN INSTR(TO_CHAR(t.col), '.') = 0 THEN TO_CHAR(t.col)
  ELSE TO_CHAR(t.col, 'FM0.099')
END

该示例不是很好-尚不清楚您的数据是否将具有1.000或大于1 / etc的值。

编辑Michael-O(2013-06-25):对于那些需要防白痴的人,您可以尝试:

case
  when instr(to_char(<col>), (select to_char(0, 'FMD') from dual))  = 0
    then to_char(<col>) 
  else to_char(<col>, 'FM999990D999')
end

它会自动观察小数点分隔符。使secodn格式模式适合您的数字大小。



 类似资料:
  • 主要内容:二进制数、八进制数和十六进制数的表示,二进制数、八进制数和十六进制数的输出C语言中的整数除了可以使用十进制,还可以使用二进制、八进制和十六进制。 二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。 1) 二进制 二进制由 0 和 1 两个数字组成,使用时必须以

  • 主要内容:二进制,八进制,十六进制我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1、9、10、297、952 等,一个数字最多能表示九,如果要表示十、十一、二十九、一百等,就需要多个数字组合起来。 例如表示 5+8 的结果,一个数字不够,只能”进位“,用 13 来表示;这时”进一位“相当于十,”进两位“相当于二十。 因为逢十进一(满十进一),也因为只有 0~9 共十个数字,所以叫做 十进制(Decimalism)。十进

  • 问题内容: 如何将RGB格式的颜色转换为十六进制格式,反之亦然? 例如,转换为。 问题答案: 注 :这两个版本的期待整数值,并且,所以你需要,如果你有非整数值做自己的舍入。 以下将执行RGB到十六进制的转换,并添加任何所需的零填充: 转换另一种方式: 最后,在答案中讨论并在@cwolves的评论中建议使用的替代版本: 更新 这是它的一个版本,还解析了一个速记的三元组,例如“#03F”:

  • Python3 实例 以下代码用于实现十进制转二进制、八进制、十六进制: # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 获取用户输入十进制数 dec = int(input("输入数字:")) print("十进制数为:", dec) print("转换为二进制为:", bin(dec

  • 我正在使用DecimalFormats将双打格式化为字符串。然后这个字符串被集成到我的表示层中。 问题:我想保留所有的小数。示例:“12345678.123456789” 格式:#.#- 我可以用##########对于大小数点,但是如果小数点更长呢? 我发现我的小测试程序很有用,想和大家分享。 你能帮我显示所有小数吗? 这导致: 编辑:一位用户提到了一个相关的问题:如何很好地将浮点数格式化为字符

  • 问题内容: 我在java(JDK 1.4)中对小数的管理有问题。 我的 第一个* 和 第二个 有两个 双 精度数字(作为格式化 String的 输出)。我在拳头和秒针之间求和,并且我得到一个带有更多十进制数字的数字! *** __ 我宁愿不增加阈值( 0.5d ),因为在类似情况下我也不安全(当我开始编码时,规范将 0.1d 作为比较值)。如果这是唯一的解决方案,那么 0.9d 的值是解决此问题的